更新:我想出来了。是一个URL问题,它在发送到服务器之前重定向并清除了POST。
$('#addbtn').on('click',function() {
$.ajax({
type: "POST",
url: "/create/",
dataType: "json",
data: $('#MultiAdd').serializeArray(),
success: function (data) {
// this returns Failed. Please Try Again. c_name=
// c_name should equal the value from post.
alert(data.msg)
},
error: function (xhr, ajaxOptions, thrownError) {}
});
});
我似乎无法发布这些数据。我尝试了很多变化。看了几个小时试图看错了什么。
我试过data: {test:'test'}
(没有用)
GET功能,但我需要这个POST。 我也尝试过普通的.serialize()。仍然没有工作。
这确实可以向我展示价值观。但是ajax不会在提交中发布它们。
console.log($('#MultiAdd').serializeArray());
(在页面上,表格和ajax代码是动态添加的,但我认为这不会有太大变化,我已经测试过了。)
更新:(我正在使用codeigniter) - 服务器端。试图访问[input name =“c_name”]
public function create()
{
$value = $this->input->post('c_name');
$msg = array("msg"=>"Failed. Please Try Again. c_name=".$value);
die(json_encode($msg));
}
答案 0 :(得分:4)
尝试将contentType
添加到application/x-www-form-urlencoded
$.ajax({
type: "POST",
url: "/create/",
dataType: "json",
data: $('#MultiAdd').serializeArray(),
contentType: "application/x-www-form-urlencoded",
success: function (data) { //success },
error: function (xhr, ajaxOptions, thrownError) { //some sort of error }
});
答案 1 :(得分:4)
如果GET请求有效但POST不,则通常是重定向问题。也就是说,当请求最初访问第一个URL并被重定向到另一个URL时,所有POST数据都不会转发到另一个URL。因此,所有数据都会丢失。
可能发生的一些常见情况(取决于服务器配置):
你明白了。如果你查看网络面板并注意到没有发送数据但响应是200 OK,那么最好检查网络面板中的请求网址是否是您的在您的代码中指定。虽然这只能在现代浏览器中实现。在旧版浏览器中,您甚至不知道该网址已被重定向。
例如(请参阅我的请求网址中缺少“en /”):