2014-07-18 1 views
1

У меня есть сайт, созданный с помощью CakePHP. Я хотел бы отправить сообщение HTTP с jquery ajax (я знаю, что у cakePHP есть помощник для этого, но я хотел бы сделать это с помощью jQuery, потому что он более гибкий).jQuery ajax ничего не отправляет

Моя JQuery функция:

function warrantyqueryPost(ServiceorderSerial, ServiceorderUserId){ 

    var data = { 'data[Warrantyqueries][serial]' : 123, 'data[Warrantyqueries][user_id]' : 4 } 

    var url = '/warrantyqueries/add'; 

    alert(url); 
    $.ajax({ 
     type: 'post', 
     url: url, 
     data: data, 
     success: function(){ 
      alert('hat geklappt'); 
     }, 
     error: function(){ 
      alert('nein'); 
     } 
    }); 

    alert('test'); 
} 

Для целей тестирования пар ключ-значение зашиты (чтобы избежать каких-либо ошибок). Вызывается функция, но вызов ajax не выполняется. Ничего не произошло.

Абсолютный URL метода пост является

http://localhost:8080/serviceordersystem/index.php/warrantyqueries/add 

Я даже не пытался что, никакого успеха.

По причинам теста я попробовал очень простой АЯКС ПОЛУЧАЕТ:

function warrantyquery(ServiceorderSerial, ServiceorderUserId){ 
    alert('test'); 
    var url = '/serviceordersystem/index.php'; 

    var jqxhr = $.get(url, function() { 
     alert("success"); 
    }) 
     .done(function() { 
      alert("second success"); 
     }) 
     .fail(function() { 
      alert("error"); 
     }) 
     .always(function() { 
      alert("finished"); 
     }); 
} 

Ничего не происходит. Если я вызову адрес в моем браузере, я получу правильную строку.

Обновление Для меня это действительно выглядит как jquery не работает! Встань, я проверю ...

+0

Посмотрите, пожалуйста, на консоль браузера ur. – Confused

+0

Пожалуйста, не используйте предупреждения() для устранения неполадок. Вместо этого используйте console.log(). Откройте инструменты разработчика и посмотрите цикл запроса/ответа. Вы также увидите ошибки JavaScript/jQuery. –

ответ

0

я узнал, что связанный JQuery библиотека была повреждена. Загрузила библиотеку еще раз, и теперь она работает.

0

Является ли URL с этим «index.php»?

http://localhost:8080/serviceordersystem/index.php/warrantyqueries/add 

не должно быть:

http://localhost:8080/serviceordersystem/warrantyqueries/add 

вместо этого?

Вы можете отладить заявку с помощью инструментов разработчика Chrome и посмотреть код ответа. Если URL-адрес неверен, он должен вернуть 404. Если в Chrome DT или Firebug ничего не отображается, это означает, что ваш запрос Ajax не запускается, и это не проблема с URL-адресом.

+0

Да, я. Из-за маршрутизатора приложения. См. Мой комментарий к предложению Споки. – mosquito87

+0

Не могли бы вы попробовать попасть в F12 (инструменты разработчика) и посмотреть код ответа? Если URL-адрес неверен, он должен вернуться 404. – Jirico

0

Скорее всего ваш URL неправ. Вы говорите, что абсолютный путь

http://localhost:8080/serviceordersystem/index.php/warrantyqueries/add 

но используя /warrantyqueries/add ваш URL приведет

http://localhost:8080/warrantyqueries/add 

Вы должны использовать абсолютный путь для того, чтобы это работало.

P.S: Из опыта у меня были проблемы с $.ajax() и http://localhost. Вы можете захотеть использовать IP вместо этого, если это все еще не удается.


Для дальнейшей отладки вы можете рассмотреть возможность открытия консоли своего браузера и просмотра ошибок и сетевых запросов. Также рассмотрите возможность расширения метода ошибок.

Например

error: function(jqXHR, textStatus, errorThrown) { 
    console.log(textStatus, errorThrown); 
} 

Взято из типа http://api.jquery.com/jquery.ajax/

ошибка: Функция (jqXHR jqXHR, String textStatus, String errorThrown)

+0

В рабочей форме я видел, что действие этой формы

... Поэтому я предполагаю, что URL должен быть /serviceordersystem/index.php/warrantyquery/add ... Пробовал это. Все еще нет успеха. – mosquito87

+0

Спасибо за подсказку с отладкой. Была ли обновлена ​​моя «простая функция». Тем не менее, нет выхода. – mosquito87

+0

@ mosquito87 это предупреждение? если да, см. ответ, как в моем ответе – Spokey