Javascript 如何将json数据添加到服务器并在单击按钮后立即在jqgrid中显示它
我有一个正在运行的程序,可以将我的数据从服务器显示到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
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,它现在工作了。我是如此的跛脚,这是一个“添加”到“添加”的词。非常感谢你。你再帮我一次。