1

現在、 PubNubを使用してユーザーのページに HTML 更新をプッシュしようとしています。HTMLコードをユーザーにプッシュし(これにはリンク、引用符、HTMLを必要とするものが含まれます)、それをユーザーのテーブルの最後に追加します。

私は現在、APIを使用して次のようにメッセージを送信しようとしています:

info = pubnub.publish({
        'channel' : 'myChannel',
        'message' : {
        'some_text' : message
        }
    })

メッセージの場所:

<div class="content">Message text here.<img src="image.gif" border="0" alt="" title="laugh out loud" class="inlineimg" /></div>

私の問題は、ページの更新を送信しようとすると、次のメッセージが表示されることです。

</div> is not JSON serializable

HTMLコードを送信しようとしているために、これが発生していると思いますか?

これを修正する方法/これを行うためのより良い方法に関する推奨事項はありますか? これは、Web ページにメッセージを「プッシュ」する最初の試みであるため、これをすべて間違って実装している可能性があります。

4

2 に答える 2

2

PubNub 経由で未加工の HTML を送信しようとすると、「JSON がシリアライズできない」問題が発生します。まず、HTMLコードをプッシュできると仮定するのは正しいです。万歳。内部に配置するデータが"message"実際にSTRINGであることを確認してください。次の型は JSON シリアライズ可能です。

  1. オブジェクト
  2. 配列
  3. ストリングス
  4. 数字

特別な python クラスまたは関数を送信しないようにしてください。これらはシリアル化されません。文字列コンテンツには、任意のUTF-8文字のシングルバイトおよびマルチバイトを含めることができます。

次の目的でこの Python を使用します"message"

message = '''<div class="content">Message text here.<img src="image.gif" border="0" alt="" title="laugh out loud" class="inlineimg" /></div>'''
于 2012-03-31T15:53:59.527 に答える
0

私はWebの専門家ではありませんが、モデルを定義して送信する必要があるように思われます。次に、モデルを逆シリアル化し、クライアントを更新します。そうすれば、JSonを使用でき、問題が発生することはありません。

どうしてもHTMLを送信する必要がある場合、HTMLを転送するときのもう1つのオプションは、ベース64文字列でエンコードすることです。このアプローチでは、文字列を送信して受信側のクライアントでデコードする前に、文字列をエンコードする必要があります。Googleでのbase64文字列のエンコードに関する情報はたくさんあります。これにより、HTMLタグなどで文字列がつまずくのを防ぎます。

base64との間のエンコーディングの例を次に示します。http://ostermiller.org/calc/encode.html たとえば、次のコード:

<img src="images/mypicture.jpg"></img>
<div id="chat-box"/>
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
</ul>

base64文字列としては次のようになります

PGltZyBzcmM9ImltYWdlcy9teXBpY3R1cmUuanBnIj48L2ltZz4KPGRpdiBpZD0iY2hhdC1ib3gi

Lz4KPHVsPgogIDxsaT5JdGVtIDE8L2xpPgogIDxsaT5JdGVtIDI8L2xpPgo8L3VsPg ==

于 2012-05-04T06:26:54.697 に答える