从通过websockets发送到客户端的数据重新加载jqgrid

时间:2012-02-07 19:58:59

标签: jquery jqgrid websocket

我正在从一个websockets服务器向我的客户端发送一个字符串,上面有一个jqgrid。

字符串是一个JSON对象,我使用eval()进行转换(我知道这不是最佳实践,但这仅仅是为了证明概念)。

我只是想用:

重新加载jqgrid
var obj = eval("(" + msg.data + ")");
$("#list").setGridParam({ "postData" : obj }).trigger("reloadGrid");

其中msg是我的socket.onmessage回调中的参数,如果我发出警报(msg.data),我会看到我正确形成的JSON字符串,但我的网格没有重新加载。

如果我提醒obj,我发现它正确地转换为对象。

我还尝试将触发器(“reloadGrid”)拆分到一个单独的行上,我的$(“#list)在它前面加上......仍然没有重新加载。

有什么建议吗?

1 个答案:

答案 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");