Ответ 1
Для меня проблема заключалась в том, что я использовал $.post
вместо $.ajax
.
// fails:
$.post({
url: "/example/" + this.id,
// ...
});
// works:
$.ajax({
url: "/example/" + this.id,
// ...
});
Я просто пытаюсь сделать простой запрос следующим образом:
$('.asd').change(
function () {
$.ajax({
url: 'http://127.0.0.1/folder/index.php/controller/action/integer',
success: function(data){}
});
}
);
Этот код пытается вместо этого перейти к http://127.0.0.1/folder/index.php/controller/[object%20Object] и получит 404. Куда он вытаскивает объект? Я использую простую строку.
Для меня проблема заключалась в том, что я использовал $.post
вместо $.ajax
.
// fails:
$.post({
url: "/example/" + this.id,
// ...
});
// works:
$.ajax({
url: "/example/" + this.id,
// ...
});
ajax
ожидает карту параметров.
post
ожидает одиночные параметры:
// fails:
$.post({
url: "/example/" + this.id,
// ...
});
// works:
$.post("/example/" + this.id);
У меня была такая же проблема и выкопал все, ища ответа. К сожалению, этот вкладчик никогда не возвращался с одним. Моя была глупой ошибкой. по возвращении из Ajax, я использовал непреднамеренно имя моей переменной после зарезервированного слова. Вот что я имел:
$.post('/MyApp.php', { param: 'getLocation' },
function(xml) {
location=$(xml).find('Location');
}
});
Закодировано таким образом, по возвращении из Ajax страница перенаправляется на http://myurl/[Object %20object], которая теперь имеет прекрасный смысл.
Разрешение: измените "location = $..." на "clocation = $..." Надеюсь, этот ответ поможет кому-то другому. Это сложно отлаживать.
Для меня, работая в Play и используя jsRoutes, это было очень больно, чтобы понять.
Кажется, что Play (javaScript) без проблем выполнит Ajax GET, используя следующий синтаксис:
$.ajax(jsRoutes.controllers.MyController.ajax(inurlparam))
.done(function(data) {
}).fail(function(data) {
})
Однако (и вот эта неприятная часть)... Если вы хотите сделать POST, вам нужно сначала использовать метод absolutURL()
по URL-адресу, чтобы получить ajax (или сообщение), чтобы не включать [object%20Object]
в URL-адрес в пост-время. Никакая отладка URL-адреса или параметров формы, казалось, не указывала, что происходит и почему. Я просто буквально "догадался" об этом решении из явного разочарования. PS: Обратите внимание на скобки в конце absolutURL()
- js люди мгновенно получат это значение "делать" функцию, а не просто передают мне дескриптор.
var url = jsRoutes.controllers.MyController.ajaxPost(inurlparam).absoluteURL();
var formData = $('#form').serialize();
$.ajax({
url: url,
type: "POST",
data: formData
}).done(function(data) {
}).fail(function(data) {
})
Я отвечаю на это здесь, так как именно здесь Google ведет меня, когда я наконец понял, что это может быть не мое кодирование, которое вызывает проблему:)