Я использую эти данные ...
// Pulled from the button that was hit
var method = document.activeElement.getAttribute('method').toUpperCase();
var url = document.activeElement.getAttribute('url');
Обе кнопки (методы) имеют одинаковые URL-адреса ... '/ user / 1'
Это мой вызов JQuery AJAX ...
$.ajax({
type: method,
url: url', /* I even hard coded this to make sure what it had to use */
contentType: "application/json; charset=utf-8",
data: $(form).serializeArray(),
error: function (xhr, status) {
alert(xhr.status + ' : ' + url);
}
});
Я обнаружил, что вызов PUT усекает номер в конце данного URL. Но у него есть косая черта, все в порядке.
Если я запускаю DELETE, он делает то, что я ожидаю
DELETE: /user/1
Если я запускаю PUT, я не понимаю, чего ожидаю ...
PUT: /user
заметили, что число "1" отсутствует в этом URL?
Я покопался и решил попробовать родной JS ... вот что у меня есть ...
var xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
if (xhr.status === 200) {
var userInfo = JSON.parse(xhr.responseText);
}
};
xhr.send(JSON.stringify($(form).serializeArray()));
Если я запускаю DELETE, он делает то, что я ожидаю
DELETE: /user/1
Если я запускаю PUT ...
PUT: /user/1
Работает.
Да, я знаю, что URL имеет «1» в конце для PUT, потому что я отправляю переменную на консоль до и после вызова ajax.
console.log(method + ': ' + url);
Кроме того, для нативного JS используется то же самое создание var, что и для jQuery.
Теперь вот кикер!
Если URL-адрес определен как ...
PUT: /user/walter
Имя в конце остается.
Есть идеи?