Javascript 调试IFrame内容

Javascript 调试IFrame内容,javascript,jquery,ajax,iframe,internet-explorer-9,Javascript,Jquery,Ajax,Iframe,Internet Explorer 9,我对一个本身工作正常的页面有一个问题,但是当它嵌入到公司网页的iFrame中(我无法控制)时,它会在IE9(但不是IE8)中阻塞 页面使用jQuery进行AJAX调用,使用KnockoutJS绑定内容进行显示。页面将GET请求中的参数传递给我的服务器,并使用AJAX进行响应,当从服务器获取数据时,页面似乎会阻塞。但是,当执行此代码时,数据正确且格式正确: $.ajax({ url: this.serviceURL + parameters, dataType: 'json',

我对一个本身工作正常的页面有一个问题,但是当它嵌入到公司网页的iFrame中(我无法控制)时,它会在IE9(但不是IE8)中阻塞

页面使用jQuery进行AJAX调用,使用KnockoutJS绑定内容进行显示。页面将GET请求中的参数传递给我的服务器,并使用AJAX进行响应,当从服务器获取数据时,页面似乎会阻塞。但是,当执行此代码时,数据正确且格式正确:

$.ajax({
    url: this.serviceURL + parameters,
    dataType: 'json',
    success: callback,
    timeout: 3000,
    error: function (jqXHR, status, errorThrown) {
        if (status == "timeout") {
            error("The connection to the server timed out.\nEither the server is down or the network is slow.\nPlease try again later.");
        }
        else {
            error("An error occurred while trying to communicate with the server.\n " + errorThrown);
        }
    }
});
在IE9中,我总是用“SyntaxError:Invalid character”抛出的错误来点击“发生了一个错误…”分支,这并没有告诉我什么


有人对如何调试这个问题有什么建议吗?我使用Fiddler查看服务器发送和返回的内容,在这一端,一切看起来都很好

更新:在它上面睡了一会儿之后,我今天开始恢复元气。我所确定的是,出于某种原因,当我的页面为iFrame时,而不是获得JSON响应:

"{"Foo":true,"Bar":true}"
我实际上得到(通过在错误处理程序中强制执行错误,以便检查jqXHR.responseText的状态)是:

如果使用控制台尝试馈送到JSON.parse,则会出现错误。所以问题是,领先空间到底从哪里来?如果我在Firefox中运行它,我会看到来自服务器的正确响应(没有空格),如果我在iFrame之外运行它,我会看到没有前导空格。所以我认为它不会出现在服务器端。在父页面和我的页面上运行的JS乱七八糟的地方,它插入了一个前导空格


更新2:仔细检查发现jqXHR.responseText.charCodeAt(0)是65279,因此它实际上不是一个空格(尽管它显示为一个空格),而是字节顺序标记。但是为什么它现在(而不是以前)出现了,为什么它会导致问题?

我无法找出这个问题的原因,所以我通过在ajax调用中添加自定义转换器来解决这个问题。所以我现在有这个:

        $.ajax({
            url: this.serviceURL + parameters,
            dataType: 'json',
            success: callback,
            timeout: 3000,
            converters: { "text json": HackyJSONConverter },
            error: function (jqXHR, status, errorThrown) {
                if (status == "timeout") {
                    //alert("Timed out");
                    error("The connection to the server timed out.\nEither the server is down or the network is slow.\nPlease try again later.");
                }
                else {
                    error("An error occurred while trying to communicate with the server.\n " + errorThrown);
                }
            }
        });
我的hacky转换器如下所示:

    function HackyJSONConverter(data) {
        if (data[0] = 65279) {
            // leading BOM - happens only with an iFrame in OT for some unknown reason
            data = data.substring(1);
        }
        return JSON.parse(data);
    }

这太愚蠢了,如果有人有更好的办法,我会很高兴的

需要更多的信息,而不是“有什么不对劲”在这里。发布更多关于URL的详细信息,显示整个错误消息、错误抛出等。我不能给出URL,它在我们的内部内部网上。正如我在帖子中所说,错误消息是“SyntaxError:Invalid character”。如果你对如何梳理更多信息有什么建议,我很乐意听听。这实际上是问题的一半。“在这一端,一切看起来都很好”-显然不是在什么地方-或者服务器端有错误<代码>警报(错误抛出)
警报(参数)
警报(this.serviceURL)然后看看这会给你带来什么。@MarkSchultheiss:是的,所有这些都给出了期望值。”。ErrorRown仍然是“SyntaxError:无效字符”。我可以使用Fiddler()查看请求是否正确发送到服务器,服务器是否发送json响应。响应并不复杂,它只是{“foo”:true,“bar”:true}。在iFrame之外或IE8中运行时,它工作正常。
    function HackyJSONConverter(data) {
        if (data[0] = 65279) {
            // leading BOM - happens only with an iFrame in OT for some unknown reason
            data = data.substring(1);
        }
        return JSON.parse(data);
    }