【问题标题】:Trouble with "Uncaught SyntaxError: Unexpected token <"“Uncaught SyntaxError: Unexpected token <”的问题
【发布时间】:2012-03-27 22:46:59
【问题描述】:

我已通过 ajax 成功请求 Basecamp XML 文件,但它抛出错误(在 Google Chrome 中):

资源被解释为“其他”,但以未定义的 MIME 类型传输。 Uncaught SyntaxError: Unexpected token

Firefox 也给我一个错误,但它是一个完全不同的错误。我无法修改 XML 文件,并且 XML 文件结构正确。我尝试并搜索,但可以找出问题所在。任何帮助将不胜感激。

这里是 jQuery 代码:

$(document).ready(function() {
    $.ajaxSetup({accepts:'text/xml',cache:false});
    $.ajax({
            type: 'GET',
            dataType: 'jsonp',
            contentType: 'text/xml',
            mimeType: 'text/xml',
            crossDomain: true,
            url: url,
            beforeSend: function(xhr) {
                    var bytes = Crypto.charenc.Binary.stringToBytes(username+":"+password);
                    var base64 = Crypto.util.bytesToBase64(bytes);
                    xhr.overrideMimeType("text/xml;charset=UTF-8");
                    xhr.setRequestHeader("Authorization", "Basic " + base64);
            },
            complete: function(xhr, status) {
                    if (status === 'error' || !xhr.responseText) {
                        $('.result').html('<p><strong>Error:</strong> ' + status + "</p><p><strong>Response Text</strong>:<br /><pre>"+xhr.responseText+"</pre></p>");
                    } else {
                        var data = xhr.responseText;
                        $('.result').html("<pre>"+data+"</pre>");
                    }
            }
            });
    });

【问题讨论】:

    标签: jquery ajax google-chrome basecamp parse-error


    【解决方案1】:

    一般来说,问题是您请求的资源不支持 JSONP,因此它返回 XML 文件而不是脚本。当您在 ajax 请求中指定 JSONP 时,该函数需要用 javascript 包装的数据,否则它将不起作用。

    当然你不能在没有 JSONP 的情况下直接请求 XML 文件,因为出于安全考虑,浏览器不允许跨域访问脚本以外的资源。

    【讨论】:

    • 谢谢!有没有办法用 JSONP 请求 XML?
    • 正如我所说,除了javascript之外,您无法直接请求跨域资源,因此如果资源的提供者(此处为basecamp)确实支持JSONP,它将xml包装成一个javascript 对象,然后您可以获取该对象并从中提取 xml 内容。或者您可以设置某种代理,使您能够从与您的页面相同的域请求资源,然后您可以直接请求 xml 而不会出现问题。
    猜你喜欢
    • 1970-01-01
    • 2012-05-17
    • 2019-02-10
    • 2014-07-08
    • 2011-03-09
    • 2014-01-06
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多