可以通过键名获取jquery .serializeArray()值吗?

时间:2010-05-24 18:31:19

标签: jquery

我正在使用jquery .serializeArray()函数并将其发送到服务器,这一切都很好。但是我需要在客户端更新一些序列化的东西。

因此,我不想在文本框上执行另一个选择器,而是将其从序列化数组中取出。

我不知道该怎么做

Product=Test&Qty=50

所以说如果我有这样的话。我可以做这样的事情

 var sendFormData = form.serializeArray();
 var val = sendFormData["Product"].value;

但这似乎不起作用。当我做这样的事情时,我才能让它发挥作用

 var sendFormData = form.serializeArray();
 var val = sendFormData[0].value;

我真的不想通过索引来做,因为这意味着如果订单改变了,那么值可能都是错误的。如果你可以通过keyname这样做,那就不会有问题了。

1 个答案:

答案 0 :(得分:5)

您可以遍历对象,设置所需内容,然后根据需要使用$.param().serialize()执行this internally)将其转换为参数字符串,如下所示:

var arr = $("form").serializeArray();
$.each(arr, function(i, fd) {
    if(fd.name === "Product") fd.value = "New Value";
});    
var sendFormData = $.param(arr); //turn it into Product=Test&Qty=50 string format
//sendFormData == "Product=New+Value&Qty=50"

You can see a demo here

如果您不需要将其序列化为字符串,请稍微简化一下,如下所示:

var sendFormData = $("form").serializeArray();
$.each(sendFormData , function(i, fd) {
    if(fd.name === "Product") fd.value = "New Value";
});
//sendFormData == "Product=New+Value&Qty=50"