2012-02-07 10 views
0

jqgridを持つクライアントにwebsocketsサーバーから文字列を送信しています。webqockets経由でクライアントに送信されたデータからjqgridを再入力

文字列はevalのを使用して変換し、私は "メートル()(私はそれがベストプラクティスではありません知っているが、これはちょうどこの時点での概念実証のためである)JSONオブジェクトです。

私はちょうどしようとしていますjqgridをリロードする:I警告(msg.data)場合

MSGは私のsocket.onmessageコールバックでのパラメータである
var obj = eval("(" + msg.data + ")"); 
$("#list").setGridParam({ "postData" : obj }).trigger("reloadGrid"); 

、私は正確に形成されたJSON文字列を参照してください、私のグリッドがリロードされていません。

私はobjに警告すると、オブジェクトに正しく変換されていることがわかります。

私はまた、トリガ( "reloadGrid")を別の行に分割して、$( "#list" prepend ...)をまだロードしていないようにしました。

提案がありますか?

+0

私は完全なあなたは何をすべきか理解していないようです。まず 'eval'の代わりに[jQuery.parseJSON](http://api.jquery.com/jQuery.parseJSON/)を使うことができますが、JSON文字列' msg.data'を'postData:{myMsg:msg.data}'を使うのではなく、 'postData:obj'として使用しますか?どのフォーマットでサーバーにデータを送信できますか?さらに、 'msg.data'の例を持たずに、あなたと勧告を与えるのは難しいです。さらに、jqGridと一緒にWebソケットを使用する方法がわかりません。 – Oleg

+0

Oleg。応答していただきありがとうございます。私はデータ型jsonstringとdatastr:msg.dataを使って作業しました。私が私のOPで言ったように、これはコンセプトの証明のためのものなので、WebSocketサーバーからプッシュされているデータからグリッドをリロードするだけで、私が言及した2つの変更このコメントでは –

+0

私は今どこに問題があるのか​​理解していると思います。私は答えに詳細を書きました。 – Oleg

答えて

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"); 
+0

あなたが私のコメントで言った正確なものを含むその答えを投稿したことは面白いです。しかし、私は努力を感謝するので、私はあなたのためにそれをチェックします:P –

+0

@ChristopherJohnson:おそらく私はあなたを正しく理解していません。あなたが現在何をしているかを説明するフルコードなしで質問を投稿すれば、それは非常に難しいです。私はデータ型に関するあなたのコメントを理解しました:jsonstringとdatastr:msg.dataこれは、あなたが現在の方法として、質問に記載されている問題に従うように使いました。 JSONごとにwebsocketとの通信をどのように統合したかについては詳しく説明していません。 'jQuery.ajax'を通信に使用できない場合は、' datetype: 'jsonstring''の使用法が役に立つかもしれませんが、どのような方法であれもっと詳細を知る必要があります* – Oleg

関連する問題