JQuery Ajax发送GET而不是POST

tuc*_*son 82 ajax jquery

以下代码触发GET而不是POST HTTP请求.

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);
Run Code Online (Sandbox Code Playgroud)

为什么,以及如何获得POST?


我在Google Chrome Inspect和Firefox Inspect中看到浏览器发送了GET.这是来自Chrome:

请求URL:http:// localhost/SAMPLE-CODES/UPDATE%20MYSQL/api/add/Request方法:GET状态代码:200 OK


解决了

名为"./api/add"的网址实际上是发布到"./api/add/index.php".事实证明,调用'./api/add /index.php'或'./api/add /'会给我一个POST请求.

这只是一个错误的URL,但出于某种原因,我得到了一个成功的GET请求'.api/add /'.

Pio*_*ula 92

关于MVC的一些问题.出于某种原因,当我删除[HttPost]时,它按预期工作,即使我告诉ajax使用POST.

  • 事实证明你需要使用

类型:"POST"

  • 即使jQuery页面上的示例说要使用

方法:"POST"

现在它发布了

但在挖掘文档后我发现了这一点.

在此输入图像描述

  • 这是我刚刚遇到的问题.没意识到选项名称在1.9更改了.以为它总是"方法" (5认同)
  • 你救了我的命!+1 (5认同)
  • 我认为包括两者都没有问题,只是为了确定。`{ 方法:“POST”,输入:“POST” }` (2认同)
  • 我花了很长时间试图解决这个问题,周五更新旧的前端以使用全新的API.非常感谢! (2认同)

tex*_*ate 27

我有这个问题,根据@ FAngle的建议,这是因为我的.htaccess正在删除尾随斜杠 - 我已经设置了网址/ajax/foo/bar/而不是/ajax/foo/bar.重定向将请求从POST更改为GET.删除/并解决问题!


Jos*_*ush 9

该URL './api/add'实际上已重定向到'./api/add/index.php'.因此这个奇怪的副作用是重定向发送后的新请求GET而不是使用POST

  • 使用完整的网址 './api/add/index.php'
  • 或者添加斜杠'./api/add/'.


ton*_*jac 6

我发现使用dataType: 'jsonp'它时会将请求转换为GET. 我把它改成它dataType: 'json'GET变成POST


emr*_*ins 5

我注意到这个行为也是我的POST发送GET的地方.该场景非常独特,但也许它会帮助某人.

在我的用户角色编辑页面上发生了这种情况,我在使用ajax(post)作为选中或取消选中角色时的立即操作.

我还让服务器配置为每当他们的角色信息发生变化时重新验证用户(并重定向他们),以便刷新他们的声明.

残酷的循环结束了:

  1. 第一个角色更新 - POST - 200成功

  2. 下一个角色更新 - POST - 找到302 - >重定向(直到我使用Fiddler而不是Chrome的网络监视器时才注意到这一点)

  3. 重定向呼叫从(2)(相同的URL) - GET - 404未找到(因为我只允许发布)

  4. GOTO(1)

我最终更改服务器以在检测到ajax请求时(基于接受类型)绕过重新身份验证/声明更新.


Mr_*_*TeD 2

对我来说,你的代码看起来不错,但如果你想确定,你可以使用 $.post 而不是 $.ajax

$.post('ajax/test.html', function(data) {
 $('.result').html(data);
});
Run Code Online (Sandbox Code Playgroud)

jquery 链接: http: //api.jquery.com/jQuery.post/

  • `post` 只是 $.ajax({type:'POST'}) 的简写方法 (8认同)