0

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

资源解释为“其他”,但以未定义的 MIME 类型传输。未捕获的 SyntaxError:意外的令牌 <

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>");
                    }
            }
            });
    });
4

1 回答 1

1

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

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

于 2012-03-27T23:23:34.477 回答