javascript - 如何找到 "SyntaxError: JSON.parse: unexpected character"的原因

标签 javascript jquery json debugging firebug

这是我得到的错误:

enter image description here

未缩小的 jQuery 1.7.2 javascript 文件中的相关行:

 error: function( msg ) {
     throw new Error( msg );
 }, 

由此,无法找出错误所在(或者至少我不清楚)。我发现从 jQuery 插件 ( http://shama.github.com/jmpress.js/#/docs ) 取消注释这一行会导致错误停止:

$("#my_div").jmpress();

但我无法获得比这更大的粒度。是否有任何调试技巧可帮助我找出此 JSON 解析发生的位置?

=== 编辑: ===

使用 JSON.parse,我能够追踪到这个试图被解析为字符串的特定字符串:

_FB_f3757ad5f032398xd_action=proxy_ready&data

但无法确定它进入我的代码的位置,但从“FB”前缀来看,这个字符串似乎是 Facebook JS SDK(我正在使用的)的一部分

最佳答案

好的,查看jmpress的源代码它来自跨源iframe消息传递。基本上jmpress does this :

window.addEventListener("message", function(event) {
    // We do not test orgin, because we want to accept messages
    // from all orgins
    try {
        var json = JSON.parse(event.data);
        switch(json.type) {
        case "select":
            // TODO SECURITY filter targetId
            $.each(eventData.settings.presentationMode.transferredValues, function(idx, name) {
                eventData.current[name] = json[name];
            });
            $(eventData.jmpress).jmpress("select", {step: "#"+json.targetId, substep: json.substep}, json.reason);
            break;
        case "listen":
            current.selectMessageListeners.push(event.source);
            break;
        case "ok":
            clearTimeout(current.presentationPopupTimeout);
            break;
        case "read":
            try {
                event.source.postMessage(JSON.stringify({type: "url", url: window.location.href, notesUrl: eventData.settings.presentationMode.notesUrl}), "*");
            } catch(e) {
                $.error("Cannot post message to source: " + e);
            }
            break;
        default:
            throw "Unknown message type: " + json.type;
        }
    } catch(e) {
        $.error("Recieved message is malformed: " + e);
    }
});

因此所有发布到主窗口的 iframe 都将通过此事件处理程序并在传递无效 JSON 时记录错误。看起来您的网站上有一个 facebook iframe,可以将消息发布到主窗口。尝试删除所有这些并查看错误是否消失。

关于javascript - 如何找到 "SyntaxError: JSON.parse: unexpected character"的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11891949/

相关文章:

javascript - 如何在向下滚动时增加高度但在向上滚动时不减小?

c++ - 如何将我的 C++ 应用程序连接到 node.js 服务器以获取 JSON 数据?

javascript - Canvas 图像编辑器

javascript - 增加仅由有序列表 <ol> 创建的新 <li> 元素的 id

javascript - addclass 和选择器的问题

json - 如何使用nodejs cloudant模块更新cloudant中的数据?

json - 如何修复将 yaml 转换为 JSON 的 YAML 文件中的错误?在此上下文中不允许映射值”

javascript - 指令/组件名称 'ng ' 无效。名称不应包含前导或尾随空格

javascript - 如何使用 PHP 或 Node JS 进行实时通知?

javascript - Uncaught ReferenceError : variable is not defined on onclick function Javascript