如何将json数据添加到服务器并在单击按钮后立即在jqgrid中显示它

时间:2011-04-06 09:53:05

标签: javascript json jqgrid

我有一个正在运行的程序,它将我的数据从服务器显示到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中显示。请...

1 个答案:

答案 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