2012-07-24 58 views
0

我想通过ajax发布表单。它给我“405方法不允许”的错误。如果我把网址放在html表单的动作部分,并在按钮点击(所以它不是csrf issue ..rite?)手动提交它,相同的html文件的作品。Ajax帖子不工作

可能是什么问题?

+3

你可以发布代码吗? – Yoeri 2012-07-24 13:05:48

+0

您的网站将为您的表单添加一个CSRF隐藏字段,以便他们通过CSRF验证。在做Ajax请求时,他们没有这些隐藏的字段,因此失败。我只是寻找隐藏的领域,并得到它的价值,并将其添加到作为职位发送的值列表。 – Gavin 2012-07-24 13:07:09

+3

@Engineer - 同源策略不会导致405错误。 – Quentin 2012-07-24 13:07:25

回答

1

确保您对ajax请求使用相同的方法。 也许你正在使用“POST”方法为你的形式和“GET”你的ajax请求。

CSRF应该抛出一个403,如果一个方法(POST,GET,PUT,DELETE,...)不被允许,你会看到一条405错误信息。

编辑:尝试使用jQuery提交表单:

// change the selector! 
var data = $("form").serialize(); 
alert(data); 

$.ajax({ 
type: "POST", 
url: "/your-backend.php", 
data: data, 

});

当你这样做时,萤火虫说什么?

+0

nopes,我交叉检查,他们是一样的。正如加文所说,隐藏的领域,如果它存在的形式,是原因。如何检索隐藏的字段? – 2012-07-24 14:42:22

+0

我修改了我的答案 – Besnik 2012-07-24 15:29:35

+0

我使用了serialize方法,提醒它找不到包含CSRF令牌的任何字段。同样的错误仍然存​​在于萤火虫“405方法不允许” – 2012-07-24 15:36:09