JQuery Ajax发送GET而不是POST
以下代码触发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);
为什么,我怎样才能得到一个POST?
我在Google Chrome Inspect和Firefox中看到检查浏览器发送GET。 这是从Chrome浏览器:
请求URL:http:// localhost / SAMPLE-CODES / UPDATE%20MYSQL / api / add /请求方法:GET状态码:200 OK
解决了
名为“./api/add”的URL实际上是发布到“./api/add/index.php”。 原来,调用'./api/add /index.php
'或'./api/add /
'给了我一个POST请求。
这只是一个错误的url,但由于某种原因,我得到了'.api / add /'成功的GET请求。
MVC上的一些问题。 出于某种原因,当我删除[HttPost]它按预期工作,即使我告诉Ajax使用POST。
- 事实certificate,你需要使用
键入:“POST”
- 即使jQuery页面上的例子说要使用
方法:“POST”
现在它是POST的
但在挖掘文档后,我发现这一点。
我有这个问题,并根据@ FAngle的build议,这是因为我的.htaccess删除尾部斜线 – 我已经设置的url/ajax/foo/bar/
而不是/ajax/foo/bar
。 redirect将请求从POST更改为GET。 删除/和解决的问题!
URL './api/add'
实际上被redirect到'./api/add/index.php'
。 所以这个奇怪的副作用是使用GET
而不是POST
发送redirect后的新请求
解
- 使用完整的url
'./api/add/index.php'
- 或者添加一个斜杠
'./api/add/'
。
我注意到这个行为,以及我的POST发送一个GET。 该场景非常独特,但也许会帮助别人。
这发生在我的用户angular色编辑页面上,我在这里使用ajax(post)作为angular色被选中或取消选中时的直接操作。
我还configuration了服务器来重新validation用户(并redirect他们),只要他们的angular色信息发生变化,以便他们的索赔将被刷新。
这个残酷的周期结束于:
-
第一个angular色更新 – POST – 200成功
-
下一个angular色更新 – POST – 302find – >redirect(我没有注意到,直到我用小提琴手而不是铬的networking监视器)
-
从(2)redirect调用(相同的URL) – GET – 404没有find(因为我只允许发布)
-
GOTO(1)
我最终更改服务器以绕过重新authentication/声明更新,当它检测到ajax请求(基于接受types)。
对我来说,你的代码看起来不错,但如果你想确定,你可以使用$ .post而不是$ .ajax
$.post('ajax/test.html', function(data) { $('.result').html(data); });
jQuery的链接: http : //api.jquery.com/jQuery.post/
我有同样的问题,发现这个问题,但答案并没有解决我的问题。 我最终通过删除ajax请求中的contentType
字段来解决这个问题。
contentType: "application/json",
看看你的.htaccess文件或search一些可能redirect你的请求的东西
我有一个类似的问题,一旦我从我的url中删除硬编码的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" });
我有这个问题,原来是IIS中的URL重写模块。
我正在使用ASP.NET MVC和WebAPI。 我创build了强制使用小写URL的规则,所以社交networking不会将相同的URL视为两个不同的页面。
例如:
“ http://url.com/View/Something/123GuidIdSomething ”
VS
“ http://url.com/view/something/123guididsomething ”
然而,这是不知为什么我的阿贾克斯请求搞乱。 我禁用了规则,问题解决了。