jqgrid – 如何在内联编辑模式下向saveRow的extraparam添加参数
我有一个字符串:
var str = "it's a beautiful day";
我将此字符串传递给函数:
rowSave(id, str);
rowSave()
var rowSave = function(id, str){ jQuery("#myjqgrid").jqGrid('saveRow',id,{ "succesfunc": function(response) { return true; }, "url": "server.aspx", "mtype": "GET", "extraparam": {} }); }
我想做的事
我想要
- 基于空格分割字符串
- 字符串中的每个单词(在拆分后)都应作为参数传递给
extraparam
以便将其附加到url。
我不知道该怎么做。
根据Oleg的建议(见下文),在我的jqgrid定义中添加了ajaxRowOptions: {cache: false}
。
$("#myjqgrid").jqGrid({ ajaxRowOptions: {cache: false} });
您可以定义类似于以下的函数来构建额外的参数对象:
function encodeStr(str){ var s = str.split(' '), i, result = {}; for (i = 0; i < s.length; i++){ result['param' + i] = s[i]; } return (result); }
jQuery.ajax由jqGrid在内部使用,可以确保正确的序列化。 如果遇到问题,请使用encodeURIComponent对每个参数进行编码。
无论如何,只需在指定参数时调用此对象:
"extraparam": encodeStr(str)
代码可以是以下内容:
var rowSave = function(id, str) { var strParts = str.split(' '), l = strParts.length, i, obj = {}, codeStart = 'A'.charCodeAt(0); // 65 for (i = 0; i < l; i++, codeStart++) { obj[String.fromCharCode(codeStart)] = strParts[i]; } $("#myjqgrid").jqGrid('saveRow', id, { succesfunc: function(response) { return true; }, url: "server.aspx", mtype: "GET", extraparam: obj }); }
首先, obj
将被填充为{A: "it\'s", B: "a", C: "beautiful", D: "day"}
然后它将被用作extraparam
的值。