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的值。