JQuery AJAX падает целое число на URL - PullRequest
0 голосов
/ 29 апреля 2018

Я использую эти данные ...

 // 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

Имя в конце остается.

Есть идеи?

...