Javascript 序列化jquery帖子,使其看起来像普通表单提交

Javascript 序列化jquery帖子,使其看起来像普通表单提交,javascript,jquery,Javascript,Jquery,我必须将jquery.post与一个php脚本集成,该脚本希望字段名是$\u post数组键,比如$\u post['field\u name']。如果我像这样写出键值对 例1: $.post("http://localhost/post_handler", { 'foo' : 'bar' //<- key value pair }, function(data, status){ console.log(data); }, 'jso

我必须将jquery.post与一个php脚本集成,该脚本希望字段名是$\u post数组键,比如$\u post['field\u name']。如果我像这样写出键值对

例1:

$.post("http://localhost/post_handler", {
    'foo' : 'bar' //<- key value pair
    },
    function(data, status){
        console.log(data);
    },
    'json'
);
后端得到如下结果:

  $_POST['post'] = 'field1=1&field2=2&field3=3'
我必须在后端拆分字段

对于这个项目,我无法访问背面,也无法控制服务器对帖子的处理。我需要后端像处理普通表单提交一样处理此问题。同样,我有数百个字段,所以我不想像例1那样写出来


我可能会做一个循环,但我认为必须有一个内置的方法来做这件事。

您的第二个示例几乎是正确的,您只需要将
post
变量直接传递给
$.post
的第二个参数,即不包装在
{}
中。试试这个:

var post = $("form").serialize();
$.post("http://localhost/post_handler", post, function(data, status) {
    console.log(data);
}, 'json');

您的第二个示例几乎是正确的,只需将
post
变量直接传递给
$.post
的第二个参数,即未包装在
{}
中。试试这个:

var post = $("form").serialize();
$.post("http://localhost/post_handler", post, function(data, status) {
    console.log(data);
}, 'json');
正如我所评论的


在示例2中,post变量位于一个对象({})内,直接传递它:$.post(url,post,function,'json')

var post=$(“表单”).serialize();
$.post(”http://localhost/post_handler“,邮政,
功能(数据、状态){
控制台日志(数据);
},
“json”
);

正如我所评论的


在示例2中,post变量位于一个对象({})内,直接传递它:$.post(url,post,function,'json')

var post=$(“表单”).serialize();
$.post(”http://localhost/post_handler“,邮政,
功能(数据、状态){
控制台日志(数据);
},
“json”
);

删除post变量周围的大括号应该会得到预期的结果。。。如果将名称/值对分解为JS对象(即…{element:value,element2:value2}),则花括号将仅围绕post()语句的数据部分

$.serialize()返回一个字符串而不是对象(因此只需传递它而不将其设为对象

var post =  $("form").serialize();
$.post("http://localhost/post_handler", post ,
    function(data, status){
        console.log(data);
    },
    'json'
);

删除post变量周围的大括号应该会得到预期的结果…如果将名称/值对作为JS对象(即…{element:value,element2:value2})进行拆分,则大括号只会环绕post()语句的数据部分

$.serialize()返回一个字符串而不是对象(因此只需传递它而不将其设为对象

var post =  $("form").serialize();
$.post("http://localhost/post_handler", post ,
    function(data, status){
        console.log(data);
    },
    'json'
);

在示例2中,post变量位于对象({})内,直接传递:$.post(url,post,函数,'json');
var post=$(“form”).serializeArray();
@Rogerolino.Thank。这很简单。如果您想回答这个问题,我会立即检查。@AuntJamaima好的,我添加了一个anwser。谢谢。在示例2中,post变量位于对象({})内),直接传递:$.post(url,post,函数,'json');
var post=$(“表单”).serializeArray()
@rogeriolino.谢谢。这很简单。如果你想回答,我会马上检查。@AuntJamaima好的,我添加了一个anwser。谢谢。谢谢。这对我来说真的是一个非常简单的错误。谢谢。这对我来说真的是一个非常简单的错误。