以下代码触发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"
方法:"POST"
现在它发布了
但在挖掘文档后我发现了这一点.

tex*_*ate 27
我有这个问题,根据@ FAngle的建议,这是因为我的.htaccess正在删除尾随斜杠 - 我已经设置了网址/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)作为选中或取消选中角色时的立即操作.
我还让服务器配置为每当他们的角色信息发生变化时重新验证用户(并重定向他们),以便刷新他们的声明.
残酷的循环结束了:
第一个角色更新 - POST - 200成功
下一个角色更新 - POST - 找到302 - >重定向(直到我使用Fiddler而不是Chrome的网络监视器时才注意到这一点)
重定向呼叫从(2)(相同的URL) - GET - 404未找到(因为我只允许发布)
GOTO(1)
我最终更改服务器以在检测到ajax请求时(基于接受类型)绕过重新身份验证/声明更新.
对我来说,你的代码看起来不错,但如果你想确定,你可以使用 $.post 而不是 $.ajax
$.post('ajax/test.html', function(data) {
$('.result').html(data);
});
Run Code Online (Sandbox Code Playgroud)
jquery 链接: http: //api.jquery.com/jQuery.post/