将数据从 Javascript 传递到 Flex 时出现问题
我正在 Flex 中使用ExternalInterface 从 Javascript 检索 AMF 编码的字符串。问题是 AMF 编码字符串有时包含 \u0000,这会导致ExternalInterface 返回 null,而不是来自 Javascript 的编码字符串。
知道如何解决这个问题吗?
提前致谢。
I am using ExternalInterface in Flex to retrieve AMF encoded string from Javascript. The problem is the AMF encoded string sometimes contains \u0000 which causes the ExternalInterface to return null instead of the encoded string from Javascript.
Any idea how to solve this?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
读取外部数据时,\0000 被错误地解释为 EOF。当它出现在 XML 文件中时,也会发生同样的情况。
您应该能够在将字符串传递给 Flash 之前将其替换为明确的字符序列,并在 ActionScript 中接收时返回。在 JavaScript 函数中,使用类似这样的内容
应该会在将字符串返回到 Flash 之前从字符串中删除不需要的 \0000 字符。
Flash端,
接收到数据后直接使用。
The \0000 is falsely interpreted as EOF when reading external data. The same thing happens when it appears in XML files, as well.
You should be able to replace it with an unambiguous character sequence before passing the string to Flash, and back upon reception in ActionScript. In the JavaScript function, use something like
This should remove the unwanted \0000 characters from the string before returning it to Flash.
On the Flash side, use
directly after receiving the data.
将 pyamf AMF 输出编码为 base64 即可解决问题。
这是Python中的编码部分:
这是AS3中的解码部分:
Encoding the pyamf AMF output to base64 will do the trick.
Here is the encoding part in python:
Here is the decoding part in AS3: