1

我目前正在尝试将 html 更新推送到使用PubNub的用户的页面。我想将 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 代码?

关于如何解决这个问题/更好的方法来做到这一点的任何建议?这是我第一次尝试将消息“推送”到网页,所以我可能完全错了。

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

我不是网络专家,但对我来说听起来你应该定义一个模型并发送它。然后,您将反序列化模型并更新客户端。这样您就可以使用 JSon 并且不会遇到任何问题。

如果您绝对必须发送 HTML,则传输 HTML 时的另一个选择是将其编码为 base 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 回答