提交jqGrid表单时,我想附加' / theRecordId'到编辑用例的URL,REST样式。这不起作用:
jQuery("#noteList").jqGrid('navGrid','#pager',
{addtitle:"Add New Note", clearAfterAdd: true},
{addCaption:"Edit Note", mtype:"PUT"
,onclickSubmit: function(rp_ge, postdata) {
rp_ge.url = editurl + '/' + postdata.id; }
},
{addCaption:"Add New Note", mtype:"POST"},
{},
{},
{}
);
这导致" / [myurl] / undefined"被发送到服务器(其中[myurl]是正确的初始editurl)。 因此,动态网址操作似乎有效,但是' id'未定义。什么应该是' id'属性?我可以看到作为表单参数传递的内容是' id'。我也尝试过noteId,它是显示网格时输入数据的名称,也是我用于jsonReader.id的名称。也没有工作。这个属性名称应该来自哪里?
答案 0 :(得分:2)
可能您使用的是为旧版jqGrid创建的示例。当前版本的jqGrid使用{gridid}_id
作为id
值的属性。例如,如果您使用的网格的id
为noteList
,则noteList_id
是postdata
onclickSubmit
参数的id属性的名称。了解以后非常重要,在调用onclickSubmit
和beforeSubmit
后,属性名称将从noteList_id
更改为id
(请参阅the part of code)。
您可以将onclickSubmit
的代码修改为以下
onclickSubmit: function (options, postdata) {
options.url = editurl + '/' + encodeURIComponent(postdata[this.id + "_id"]);
}
我包含了JavaScript函数encodeURIComponent的调用,以确保在id
中使用任何字符的情况下对URL进行正确编码。