在 jeditable 的文档中对于 submitdata 参数(一个在 ajax 请求中包含一些额外参数的参数),据说:
(Mixed) submitdata: Extra parameters when submitting content. Can be either a hash or function returning a hash.
$(".editable").editable("http://www.example.com/save.php";, { submitdata : {foo: "bar"}; }); $(".editable").editable("http://www.example.com/save.php";, { submitdata : function(value, settings) { return {foo: "bar"}; } });
所以我需要在 submitData 中包含一些我从表单序列化中恢复的参数:
<form id="myForm">
<input type="hidden" name="param1" value="myValue1"/>
<input type="hidden" name="param2" value="myValue2"/>
</form>
所以当我准备提交数据时,我会这样做:
submitdata : function(value, settings){
return $("#myForm").serializeArray();
}
问题在于以这种方式序列化表单会导致格式如下:
[Object { name="param1", value="myValue1"}, Object { name="param2", value="myValue2"}]
但 jeditable 不理解它并在请求中发送
0[name] param1
0[value] myValue1
1[name] param2
1[value] myValue2
我试过使用 serialize() 函数,但它也不理解它,因为 Jeditable 需要类似的东西:
{param1: "value1" , param2: "value2"}
是否有任何方法可以将表单序列化为可编辑的所需格式或在序列化后快速更改格式的方法?
谢谢。
最佳答案
我可以解决从序列化数组构建对象的问题,但我不知道这是否是最好的方法。
submitdata : function(value, settings){
var reformat = function(array){
var obj = {};
for(i=0; i<array.length; i++){
var a = array[i];
var name = a.name;
var value = a.value;
obj[name] = value;
}
return obj;
};
return reformat($("#myForm").serializeArray());
}
关于javascript - 在 "hash format"中序列化表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4459105/