我有一个正在运行的程序,它将我的数据从服务器显示到jqgrid。我现在想要的是将数据保存到服务器。这是我的代码:
function Add(){
var datas = {
"ID": "xyz",
"operation": "Add",
"fields": ["code", "desc", "type"],
"values": [$('#code').val(), $('#desc').val(), $('#type').val() ]
}
$('#tblData1').setGridParam({
url:'myni.php?path=' + encodeURI('this/update') + '&json=' +(JSON.stringify(datas)),
datatype: Settings.ajaxDataType,
});
$('#tblData1').trigger('reloadGrid');
}
此代码返回错误消息“异常错误:服务器错误:未指定参数'操作'。”我已经设置了一个操作,我不知道出了什么问题。有人可以帮我解决这个问题吗?请。
我想知道如何在点击按钮后将数据添加到服务器并立即在jqgrid中显示。请...
答案 0 :(得分:1)
功能Add
设置本地变量datas
,它仅存在于Add
函数内部。您可能想要的是从函数返回值并设置为setGridParam
调用的使用范围中存在的变量。
下一个问题是,在将JSON.stringify(datas)
作为网址的一部分插入之前,您应该对encodeURIComponent
进行编码。您也可以使用jQuery.param功能:
url:'myni.php?' + $.param({path:'this/update', json:JSON.stringify(datas)})
如果您对服务器的请求使用HTTP GET(mtype:'GET'
),我建议您最好使用包含函数的jqGrid的postData
参数:
$("list").jqGrid({
url:'myni.php',
postData: {
path: 'this/update',
json: function() {
return JSON.stringify({
ID: "xyz",
operation: "Add",
fields: ["code", "desc", "type"],
values: [$('#code').val(), $('#desc').val(), $('#type').val()]
});
}
},
// other parameters
});
postData
参数的属性将添加到网址中(如果需要,可以插入'&';'以及mtype:'GET'
或{在mtype:'POST'
的情况下发布数据。
postData
内部使用功能的优势在于,每个ajax请求都会计算相应的值(如json
参数的值)。如果用户更改排序顺序或选择其他页面,则将发送对服务器的ajax请求。因此,如果必须确定postData
属性并且<{>>来自$('#code').val()
的当前值,则会在请求中插入$('#desc').val()
和$('#type').val()
。
如果path
参数的值不应该是静态的,你也可以将它作为函数。
如果使用postData
包含功能,则代码可以缩减为$('#tblData1').setGridParam({datatype: Settings.ajaxDataType}).trigger('reloadGrid')
。
有关postData
内部功能使用的更多信息,请阅读here。