【问题标题】:JSON invalid tokenJSON 无效令牌
【发布时间】:2011-07-13 12:56:51
【问题描述】:

你好, 我的解析函数有一个非常烦人的问题。我从我的 websocket 服务器接收到一个 JSON 字符串(我很确定它是)。我已经在线验证了它,但在用我的脚本解析它时仍然收到“无效令牌”错误。

但是,如果我手动输入该函数,则一切正常。我的弦有什么问题?

function parseSocketMsg(msg){
        var obj = jQuery.parseJSON(msg);
        $.each(obj, function(i, item){
            var rec = getRect(item.id);
            rec.x = item.x;
            rec.y = item.y;
        });
}

function connect(){
    var host = "ws://localhost:8080/scrabble/server.php";
    try{
        socket = new WebSocket(host);
        print("Connected. Awaiting Handshake...");
        socket.onopen    = function(msg){
            if(!ctx){
                init();
            } 
            print("Connection established - status "+this.readyState); 
        };
        socket.onmessage = function(msg){ parseSocketMsg(msg.data); };
        socket.onclose   = function(msg){ print("Connection Lost! Reconnecting..."); connect(); };
    }
    catch(ex){}
}

【问题讨论】:

  • 你能发布一个示例 JSON 字符串吗?
  • 尝试自己记录输入,使用 firebug 的 console.log 或简单的警报。
  • 这是收到的:[{"id":7,"x":637,"y":151},{"id":23,"x":672,"y ":151},{"id":10,"x":733,"y":416}]
  • @Nokus:如果您使用的是 Chrome,有一个很好的资源可以查看实际收到的数据:chrome://net-internals/

标签: javascript json websocket


【解决方案1】:

最近有一个类似的问题,问题是字符串的开头和结尾有一个意外的空字符。

我建议您将尝试解析的内容的确切内容以十六进制形式转储,目视检查并不总是会在字符数据中显示异常。

【讨论】:

  • ymmd,开头有一个额外的字符,把一切都搞砸了。谢谢!
【解决方案2】:

你有var host = "ws://... 这可能是问题吗?你确定你收到了什么? (记录/打印/无论你得到什么)。我想您正在阅读服务器中的日志并假设您的 js 正在获取它。

【讨论】:

  • 我把它打印在浏览器上,然后直接复制回 js 中,结果发现它与我收到的不同。它也有效 0.o
猜你喜欢
  • 1970-01-01
  • 2012-04-09
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 2020-02-22
  • 2016-07-23
  • 2021-08-21
  • 2021-04-13
相关资源
最近更新 更多