我必须将jquery .post与php脚本集成,该脚本要求字段名称为$ _POST数组键,如$ _POST ['field_name']。如果我写出像这样的键值对
示例1:
$.post("http://localhost/post_handler", {
'foo' : 'bar' //<- key value pair
},
function(data, status){
console.log(data);
},
'json'
);
它发布完美,意味着$ _POST ['foo'] ='bar'。不幸的是,有数百个字段,我不能写出来。如果我试试
示例2:
var post = $("form").serialize();
$.post("http://localhost/post_handler", {
post
},
function(data, status){
console.log(data);
},
'json'
);
后端有类似的东西:
$_POST['post'] = 'field1=1&field2=2&field3=3'
我必须拆分后端的字段。
对于这个项目,我无法访问后面的内容,无法控制服务器对帖子的操作。我需要后端来处理这个像普通表单提交一样。同样,我有数百个字段,所以我不想像示例1那样写出来。
我可以做一个循环,但我认为必须有一个内置的方法来做到这一点。
答案 0 :(得分:1)
你的第二个例子几乎是正确的,你只需要将post
变量直接传递给$.post
的第二个参数,即。没有包裹在{}
中。试试这个:
var post = $("form").serialize();
$.post("http://localhost/post_handler", post, function(data, status) {
console.log(data);
}, 'json');
答案 1 :(得分:1)
正如我所评论的
在示例2中,post var位于对象({})内,直接传递:$ .post(url,post,function,&#39; json&#39;);
var post = $("form").serialize();
$.post("http://localhost/post_handler", post,
function(data, status){
console.log(data);
},
'json'
);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input type="text" name="i1" value="v1">
<input type="text" name="i2" value="v2">
</form>
&#13;
答案 2 :(得分:1)
删除post变量周围的花括号应该给你你期望的结果...花括号只会包围post()语句的数据部分如果你将名称/值对分解为JS对象( ie ... {element:value,element2:value2}。
$ .serialize()返回一个字符串而不是一个对象(http://api.jquery.com/serialize/)-,所以简单地传递它而不使它成为一个对象......
var post = $("form").serialize();
$.post("http://localhost/post_handler", post ,
function(data, status){
console.log(data);
},
'json'
);