Jquery 从通过WebSocket发送到客户端的数据重新加载jqgrid
我正在将一个字符串从websockets服务器发送到带有jqgrid的客户端 字符串是一个JSON对象,我正在使用eval()转换它(我知道这不是最佳实践,但这只是为了证明这一点) 我只是想用以下内容重新加载jqgrid:Jquery 从通过WebSocket发送到客户端的数据重新加载jqgrid,jquery,jqgrid,websocket,Jquery,Jqgrid,Websocket,我正在将一个字符串从websockets服务器发送到带有jqgrid的客户端 字符串是一个JSON对象,我正在使用eval()转换它(我知道这不是最佳实践,但这只是为了证明这一点) 我只是想用以下内容重新加载jqgrid: var obj = eval("(" + msg.data + ")"); $("#list").setGridParam({ "postData" : obj }).trigger("reloadGrid"); 其中msg是socket.onmessage回调中的参数,如
var obj = eval("(" + msg.data + ")");
$("#list").setGridParam({ "postData" : obj }).trigger("reloadGrid");
其中msg是socket.onmessage回调中的参数,如果我发出警报(msg.data),我会看到格式正确的JSON字符串,但我的网格不会重新加载
如果我提醒obj,我会看到它正确地转换为对象
我还尝试将触发器(“reloadGrid”)拆分到一个单独的行中,并在前面加上$(“#list”),但仍然没有重新加载
有什么建议吗?如果您使用
数据类型:“jsonstring”
和datastr:msg.data
并且希望用另一个数据重新加载网格,您应该了解数据类型:“jsonstring”
在第一次加载后将更改为数据类型:“jsonstring”
。只有在与服务器通信时才会使用postData
参数。在这种情况下,数据类型必须是'json'
或'xml'
。在这种情况下也应设置url
参数
因此,我认为您可以尝试执行以下操作:
$("#list").setGridParam({
datatype: 'jsonstring', // reset the `datatype`
datastr: msg.data // set new value of the input data
}).trigger("reloadGrid");
看来我不太明白你在做什么。首先,您可以使用eval
,而不是eval
,但我不明白为什么您需要将JSON字符串msg.data
转换为对象,然后将其用作postData:obj
而不仅仅是使用postData:{myMsg:msg.data}
?您可以使用哪种格式将数据发送到服务器?此外,如果没有msg.data
的示例,很难给您提供建议。此外,我还不清楚如何将WebSocket与jqGrid.Oleg一起使用。谢谢你的回复。最后,我只使用datatype:jsonstring和datastr:msg.data使其工作。正如我在OP中所说,这只是为了概念验证,所以我只是试图让网格从websocket服务器推送的数据中重新加载数据,并且我能够使用我在这篇评论中提到的两个更改来实现这一点。我想我现在明白了问题出在哪里了。我在我的答案中写下了细节。有点可笑,你发布的答案与我在评论中所说的一模一样。但我非常感谢您的努力,因此我将为您核对:P@ChristopherJohnson当前位置可能我没有正确地理解你。如果你在发布问题时没有更多完整的代码来解释你目前所做的事情,这是非常困难的。我理解您对datatype:jsonstring和datastr:msg.data的评论,因此您使用该方法作为当前方法,以解决问题中描述的问题。您不会详细描述如何根据JSON将通信与websocket集成在一起。如果您不能使用jQuery.ajax
进行通信,那么使用datetype:'jsonstring'
可能会有所帮助,但无论如何,我需要更多的细节来帮助您