Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将json数据添加到服务器并在单击按钮后立即在jqgrid中显示它_Javascript_Json_Jqgrid - Fatal编程技术网

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

Javascript 如何将json数据添加到服务器并在单击按钮后立即在jqgrid中显示它,javascript,json,jqgrid,Javascript,Json,Jqgrid,我有一个正在运行的程序,可以将我的数据从服务器显示到jqgrid。我现在想要的是将数据保存到服务器。这是我的密码: function Add(){ var datas = { "ID": "xyz", "operation": "Add", "fields": ["code", "desc", "type"], "values": [$('#code').val(), $('#desc').val(), $('#type').val() ] } $('#tblDa

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

函数
添加
设置本地变量
数据
,它们仅存在于
添加
函数内部。您可能希望从函数返回值,并将其设置为
setGridParam
调用的使用范围中存在的变量

下一个问题是,在将
encodeURIComponent
作为URL的一部分插入之前,应该对
JSON.stringify(datas)
进行编码。您也可以改为使用函数:

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
});
如果使用
mtype:'GET'
,则
postData
参数的属性将添加到URL中('?'和'&'将在需要时插入),如果使用
mtype:'POST'
,则将添加到发布数据的主体中

postData
内部使用函数的优点是,将在每个ajax请求上计算相应的值(如
json
参数的值)。如果用户更改排序顺序或选择另一个页面,将向服务器发送ajax请求。因此,在这种情况下,必须确定
postData
属性,并且将在请求中插入
$(“#code').val()
$(“#desc').val()
$(“#type”).val()中的当前值

如果
path
参数的值不应是静态的,则也可以将其作为函数

如果使用包含您编写的函数的
postData
,可以将代码缩减为
$(''#tblData1')。setGridParam({datatype:Settings.ajaxDataType})。触发器('reloadGrid')


有关
postData
中函数用法的更多信息,您可以阅读。

Oleg,这是我的代码。它返回一个错误“parsererror”。变量数据={…};$。ajax({type:'GET',url:'..php?'+$.param({path:'../update',json:json.stringify(datas)}),dataType:Settings.ajaxDataType,data:'json='+json.stringify(datas),success:function(data){if('error'在数据中){alert(json.stringify(datas));})$('#tblData1').setGridParam({datatype:primeSettings.ajaxDataType}).trigger('reloadGrid');如果在url中使用
$.param
,则应删除
数据:'json='+json.stringify(datas)
部分。在这种情况下,最好的是me
$.ajax({type:'GET',url:'..php',data:{path:'../update',json:json.stringify(datas)},success:…})
在这种情况下,
数据
参数的值将由
$.param
处理,并由$.ajax本身附加到url。我现在已经编辑了代码,但它没有添加。如果我把这个代码“$('#tblData1').setGridParam({datatype:primeSettings.ajaxDataType}).trigger('reloadGrid');”,“parsererror”显示。。。出了什么问题?你能发布完整的代码示例来重现你的问题吗(包括
datas
的测试JSON数据)?嘿,Oleg,它现在工作了。我是如此的跛脚,这是一个“添加”到“添加”的词。非常感谢你。你再帮我一次。