想知道是否有人使用jQgrid在同一页面上发布来自其他表单的动态数据。动态,因为我不知道要发布的输入名称,而是在呈现网格时发布整个序列化表单。
我在postData中设置了额外的数据,但它没有正确地传递到url中,因为它看起来是双url编码的。参见:
$(document).ready(function() {
$("#rpt").jqGrid(
{ url:'/get.json',
postData: {filter: $('form').serialize()},
datatype: "json",
gridview: true,
colModel:[id:'col1']
});
});
通过这里和其他网站上的各种线程,我在表单上尝试了建议的JSON.stringify和serializearray(),以及自定义函数无济于事。表单数据显示为编码,另一方无法通过_GET获得。
任何建议都会很棒 - 谢谢!
答案 0 :(得分:1)
我不确定您希望以哪种形式从服务器端的表单中获取数据。不过,我建议您使用以下表格中的postData
postData: {
filter: function () {
var result = {}, i, item,
formInfo = $('form#myForm').serializeArray(),
l = formInfo.length;
for (i = 0; i < l; i++) {
item = formInfo[i];
result[item.name] = item.value;
}
return JSON.stringify(result);
}
}
如果是以下测试表格
<form id="myForm">
<div><input type="text" name="a" value="1 from a" id="a" /></div>
<div><input type="text" name="b" value="2 from b" id="b" /></div>
<div><input type="hidden" name="c" value="3 from c" id="c" /></div>
<div>
<textarea name="d" rows="8" cols="40">4</textarea>
</div>
<div><select name="e">
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select></div>
<div>
<input type="checkbox" name="f" value="8" id="f" />
</div>
</form>
result
变量将是
var result = {
a: "1 from a",
b: "2 from b",
c: "3 from c",
d: "4",
e: "5"
}
因此不会进行数据转换。然后我建议使用result
将对象JSON.stringify
转换为JSON字符串。 (取决于服务器代码,可能不需要。)因此filters
参数将作为
{"a":"1 from a","b":"2 from b","c":"3 from c","d":"4","e":"5"}