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 に答える