Следующий код запускает GET вместо HTTP-запроса POST.
function AddToDatabase() {
this.url = './api/add';
}
AddToDatabase.prototype.postData = function(dataToPost) {
$.ajax({
type: "POST",
url: this.url,
data: dataToPost,
context: this,
success: this.onSuccess
});
};
var AddToDatabase = new AddToDatabase();
data = {data: 'coucou'};
AddToDatabase.postData(data);
Почему и как я могу получить POST?
Я вижу в Google Chrome Inspect и Firefox Inspect, что браузер отправляет GET. Вот из Chrome:
URL-адрес запроса: http: // localhost / SAMPLE-CODES / UPDATE% 20MYSQL / api / add / Метод запроса: GET код состояния: 200 OK
Решено
URL-адрес под названием './api/add' должен был фактически отправлять сообщения в './api/add/index.php'. Оказывается, вызов ./api/add /index.php
или ./api/add /
дает мне запрос POST.
Это был просто неправильный URL, но по какой-то причине я получал успешный запрос GET на '.api / add /'.
Ответы:
Некоторая проблема с MVC. По какой-то причине, когда я удаляю [HttPost], он работает, как ожидалось, хотя я говорю ajax использовать POST.
Теперь это POST
Но покопавшись в документации, я нашел вот это.
источник
{ method : "POST", type: "POST" }
У меня была эта проблема, и по предложению @ FAngle это было потому, что мой .htaccess удалял конечные косые черты - и я установил URL-адрес,
/ajax/foo/bar/
а не/ajax/foo/bar
. Перенаправление изменяет запрос с POST на GET. Удалите / и проблема решена!источник
URL-адрес
'./api/add'
действительно был перенаправлен на'./api/add/index.php'
. поэтому этот странный побочный эффект, который новый запрос после перенаправления отправил с использованиемGET
вместоPOST
Решение
'./api/add/index.php'
'./api/add/'
.источник
Я также заметил это поведение, когда мой POST отправлял GET. Сценарий довольно уникальный, но, возможно, он кому-то поможет.
Это происходило со мной на моей странице редактирования ролей пользователя, где я использовал ajax (сообщение) в качестве немедленного действия, когда роль была отмечена или снята.
У меня также был сервер, настроенный для повторной аутентификации пользователя (и перенаправления его) всякий раз, когда их информация о ролях изменялась, чтобы их утверждения обновлялись.
Жестокий цикл закончился так:
Первое обновление роли - POST - 200 успехов
Следующее обновление роли - POST - 302 Найдено -> Перенаправление (я не замечал этого, пока не использовал Fiddler, а не сетевой монитор Chrome)
Перенаправить вызов из (2) (тот же URL) - GET - 404 Not Found (так как я разрешил только публикацию)
GOTO (1)
Я закончил тем, что сменил сервер, чтобы обойти повторную аутентификацию / обновление требований, когда он обнаружил запрос ajax (на основе типов принятия).
источник
Я обнаружил, что при использовании
dataType: 'jsonp'
он преобразует запрос в файлGET
. Я поменял наdataType: 'json'
это поменял сGET
наPOST
.источник
У меня была аналогичная проблема, и она начала работать для меня, как только я удалил жестко запрограммированный
https://
со своего URL-адреса.jQuery.ajax({ type: "POST", url: "www.someurl.com",//instead of "https://www.someurl.com" data: { foo:"bar"}, success: function(d){ console.log(d); }, dataType: "JSONP" });
источник
Для меня ваш фрагмент кода выглядит нормально, но если вы хотите быть уверены, вы можете использовать $ .post вместо $ .ajax
$.post('ajax/test.html', function(data) { $('.result').html(data); });
ссылка jquery: http://api.jquery.com/jQuery.post/
источник
post
это просто сокращенный метод для $ .ajax ({type: 'POST'})Просмотрите свой файл .htaccess или найдите что-нибудь еще, что может перенаправить ваш запрос
источник
У меня была такая же проблема, и я нашел этот вопрос, но ответы не решили мою проблему. В конце концов я решил это, удалив
contentType
поле в запросе ajax.contentType: "application/json",
источник
У меня была эта проблема, и это оказался модуль перезаписи URL в IIS.
Я использую ASP.NET MVC и WebAPI. Я создал правило для принудительного использования строчных URL-адресов, чтобы социальные сети не просматривали один и тот же URL-адрес как две разные страницы.
Например:
" http://url.com/View/Something/123GuidIdSomething "
против
" http://url.com/view/something/123guididsomething "
Однако это как-то мешало моим запросам ajax. Я отключил правило, и проблема была решена.
источник
очень распространенная ошибка заключается в том, что мы используем тип кнопки в качестве отправки и не меняем метод для формы (который получается по умолчанию)
убедитесь, что вы не используете кнопку типа отправки, и если вы это сделали, вы изменили метод формы для публикации
источник