Я пытаюсь создать запрос ajax, который в конечном итоге позволит пользователям сортировать список, нажимая кнопки рядом с каждым элементом. Вот то, что я до сих пор:Использование ajax с jQuery - url не принимается
upLinks.on('click', function(e) {
var link;
e.preventDefault();
link = $(this)[0];
console.log(link.pathname);
$.ajax({
type: 'PUT',
url: link.pathname
});
return false;
});
console.log(link.pathname)
выходит из /projects/11/project_items/104/sort
на консоль, как и ожидалось. Однако, Ajax запрос возвращает ошибку:
PUT http://localhost:3000/projects/11 400 (Bad Request)
Глядя на логи сервера, это на самом деле собирается /projects/11
, не /projects/11/project_items/104/sort
по какой-то причине. Согласно документам jQuery, /projects/11
был бы параметром по умолчанию для ajax в этом случае, потому что это маршрут текущей страницы. Это заставляет меня поверить, что он вообще игнорирует параметр url.
Если я изменяю тип метода HTTP на GET
, ajax работает как ожидалось. Есть ли причина, по которой /projects/11/project_items/104/sort
не является приемлемым адресом для запроса PUT
? Я думал, что, поскольку я обновляю данные (с новой позицией), самым логичным вариантом будет запрос PUT
.
Попробуйте сделать трассировку сети (нажмите F12 в Chrome | Firefox и перейти к сети), чтобы увидеть, что на самом деле отправляется. – amphetamachine
Зависит, если сервер может принимать запросы PUT – pee2pee
@amphetamachine Спасибо за отзыв. Через вкладку сети я смог убедиться, что запрос PUT действительно отправляется успешно, но затем сервер пытался перенаправить, что вызвало ошибку. Таким образом, это была проблема на стороне сервера. – Shaun