我正在从一个websockets服务器向我的客户端发送一个字符串,上面有一个jqgrid。
字符串是一个JSON对象,我使用eval()进行转换(我知道这不是最佳实践,但这仅仅是为了证明概念)。
我只是想用:
重新加载jqgridvar obj = eval("(" + msg.data + ")");
$("#list").setGridParam({ "postData" : obj }).trigger("reloadGrid");
其中msg是我的socket.onmessage回调中的参数,如果我发出警报(msg.data),我会看到我正确形成的JSON字符串,但我的网格没有重新加载。
如果我提醒obj,我发现它正确地转换为对象。
我还尝试将触发器(“reloadGrid”)拆分到一个单独的行上,我的$(“#list)在它前面加上......仍然没有重新加载。
有什么建议吗?
答案 0 :(得分:0)
如果您使用datatype: 'jsonstring'
和datastr: msg.data
,并且希望使用其他数据重新加载网格,则应了解首次加载后datatype: 'jsonstring'
将更改为datatype: 'jsonstring'
。仅当您与服务器通信时,才会使用postData
参数。如果datatype
必须是'json'
或'xml'
。也应该在案例中设置url
参数。
所以我可以尝试执行以下操作:
$("#list").setGridParam({
datatype: 'jsonstring', // reset the `datatype`
datastr: msg.data // set new value of the input data
}).trigger("reloadGrid");