Я просто пытаюсь сделать такой простой запрос:
$('.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. Откуда он вытаскивает объект? Я использую простую строку.
У меня была та же проблема, и я копался в поисках ответа. К сожалению, этот участник никогда не вернулся с одним. Моя была глупая ошибка. вернувшись из 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()
- люди сразу же получат те, которые означают «выполнить» функцию, а не просто передадут мне ручку.
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 привел меня, когда я наконец понял, что это может быть не мое кодирование, которое вызывает проблему:)
Вы должны десериализировать текст до номера (Int):
var ID = parseInt(
$(this)
.closest("tr") //tr of DataTable
.find("td") //td of ....
.eq(0)
.text(),
10
);