/ / jQuery ajax не изпраща нищо - jquery, ajax, cakephp, cakephp-2.3

jQuery ajax не изпраща нищо - jquery, ajax, cakephp, cakephp-2.3

Имам сайт, създаден с CakePHP. Бих искал да изпратя HTTP пост с jquery ajax (знам, че cakePHP има помощник за това, но бих искал да го направя с jQuery, защото е по-гъвкав).

Моята функция 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

Дори опитах това, без успех.

По тестови причини пробвах много прост ajax get:

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 за отговор № 1

Най-вероятно вашият 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 errorThrow)


0 за отговор № 2

Правилен ли е 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 за отговор № 3

Разбрах, че свързаната библиотека jquery е повредена. Изтеглих отново библиотеката и сега тя работи.