2012-08-30 64 views
45

以下代码会触发GET而不是POST HTTP请求。JQuery Ajax发送的是GET而不是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中看到检查浏览器是否发送GET。下面是从浏览器:

请求URL:http://本地主机/采样码/ UPDATE%20MYSQL/API /添加/ 请求方法:GET状态代码:200 OK


求解

称为'./api/add'的URL实际上是发布到'./api/add/index.php'。原来,调用'./api/add /index.php'或'./api/add /'给了我一个POST请求。

这只是一个错误的网址,但由于某种原因,我正在成功获取'.api/add /'GET请求。

+2

为什么你认为这将是一个GET请求? –

+1

您是否试图在firebug上打开网络面板的情况下在Firefox上运行ajax调用? – fcalderan

+2

[测试](http://jsfiddle.net/4gh7M/) - 如果您将运行此项并检查网络面板,您会发现它发送了一个POST请求 –

回答

2

对于我来说,你的代码看起来OK一块,但如果你要确定,你可以使用.post的$代替$就

$.post('ajax/test.html', function(data) { 
$('.result').html(data); 
}); 

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

+4

'post'只是$ .ajax({type:'POST'})的简写方法 –

+0

是的,但是因为你的代码看起来不错。当我测试它时,它会发出一些请求 –

1

退房您的.htaccess文件或搜索可能重定向您的请求的其他东西

72

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

  • 事实证明,你需要使用

类型: “POST”

  • 即使jQuery的页面上的例子说,使用

方法:“P OST”

现在邮政的

但是文档中挖后,我发现这一点。

enter image description here

+4

这是我只是有问题。没有意识到选项名称在1.9时发生了变化。以为它总是“方法” –

+1

与我一样......与我一样:) – ppumkin

+4

你刚刚救了我的命! +1 –

4

我注意到了这个行为,以及在我的POST被发送GET。该场景非常独特,但也许会帮助某人。

我的用户角色编辑页面发生了这种情况,我在其中使用ajax(post)作为角色被选中或未选中时的直接操作。

我还配置了服务器,以便在他们的角色信息发生变化时重新对用户进行身份验证(并重定向他们),以便刷新他们的声明。

残酷的周期结束为:

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

  2. 下一个角色更新 - POST - 302找到 - >重定向(我做不 通知,直到我用小提琴手,而不是Chrome的网络 显示器)

  3. 转接呼叫由式(2)(同URL) - 获取 - 404未找到(因为 我只允许邮政)

  4. GOTO(1)

我结束了改变服务器绕过重新认证/要求更新,当它检测到AJAX请求(基于接受类型)。

+0

非常感谢! – machineaddict

1

我有类似的问题,一旦我从我的网址中删除硬编码的https://,它就开始为我工作。

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" 
}); 
13

我有这个问题,每@方科的建议,这是因为我的.htaccess被删除结尾的斜杠 - 我已经设置的URL /ajax/foo/bar/而不是/ajax/foo/bar。重定向将请求从POST更改为GET。删除/和解决的问题!

+0

这解决了原始问题中提到的确切问题。我在Wamp 3.0.6 – iko

+0

上托管一个laravel应用程序,这个解决方案适用于我,谢谢 –

2

我有同样的问题,发现这个问题,但答案并没有解决我的问题。我最终通过删除ajax请求中的contentType字段来解决此问题。

contentType: "application/json", 
7

该URL './api/add'实际上被重定向到'./api/add/index.php'。因此,这个奇特的副作用影响其使用的GET代替POST

解决方案

  • 发送重定向后的新要求使用完整的URL './api/add/index.php'
  • 或添加斜线'./api/add/'
相关问题