Имам сайт, създаден с 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 е повредена. Изтеглих отново библиотеката и сега тя работи.