提交带有额外id的jQuery表单序列化

时间:2011-07-05 10:00:54

标签: jquery forms

我有一个这样的表格:

 <form id="cform">
    <label>folder name:</label>
    <input type="text" name="Folder[name]" />
    <input id="cfolder" type="submit" value="create" />
 </form>

我想在jQuery ajax中提交表单,所以我有这样的代码:

 $.ajax({
    type: "POST",
    url: "/folder/create",
    data: $('#cform').serialize(),
    success: function(msg){
        //sucess
    }
  });
到目前为止,这一切都很简单,但现在我想提交一个额外的动态ID($ id值可用)以及整个表单。我怎样才能做到这一点?我试过这个:

 data: $('#cform').serialize()+"&Folder[id]="+$id,

但它没有用,服务器端没有得到id。这里的棘手部分是Folder [name],Folder [id], 因为服务器端接收php中的数据,如下所示:

if(isset($_POST['Folder'])){
    //assign data here
}

希望这是明确的,并感谢任何建议。

3 个答案:

答案 0 :(得分:3)

作为替代建议:

您可以使用.serializeArray [docs]$.param [docs]。然后jQuery将处理所有编码:

var data = $('#cform').serializeArray();
data.push({name: "Folder[id]", value: $id});

// later

data: $.param(data);

我不明白你是否遇到$_POST['Folder']的问题,但是如果你在末尾使用带括号的名字,那么PHP会将数据解析成一个数组。

因此,您可以使用$_POST['Folder']['name']$_POST['Folder']['id']访问数据。

有关详细信息,请查看Variables From External Sources

答案 1 :(得分:0)

如何以这种方式发送数据 -

data: $('#cform').serialize()+"&FolderId=" + $id

然后尝试在后端检查$_POST['FolderId']

jsfiddle上的example

答案 2 :(得分:0)

你不使用这个

`data: $('#cform').serialize()+"&Folder[id]="+$id,`

连接,使用这个

data: $('#cform').serialize()+"&Folderid="+$id,

并在php文件中通过

获取
if(isset($_POST['Folderid'])){
    //assign data here
}