2012-03-27 19 views
0

私は正常にAJAXを経由してベースキャンプのXMLファイルに要求してきたが、それは(Google Chromeで)エラーがスローされます:トラブル「キャッチされないでSyntaxError:予期しないトークン<」

リソースが他と解釈が、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>"); 
        } 
      } 
      }); 
    }); 
+0

パスワードを要求します。 – Niko

答えて

1

一般的に、問題はあなたがJSONPをサポートしていません要求されたリソースが、これではなく、スクリプトのXMLファイルを返すことです。 JSONPをajaxリクエストで指定すると、関数はデータをjavascriptでラップすることを期待しています。そうでないと、動作しません。

もちろん、JSONPを使わずにXMLファイルを直接リクエストすることはできません。これは、スクリプト以外のリソースへのクロスドメインアクセスが、ブラウザのセキュリティ上の問題で許可されていないためです。

+0

ありがとう! JSONPでXMLをリクエストする方法はありますか? – elin15

+0

私が言ったように、javascript以外のドメイン間のリソースを直接リクエストする方法はありませんので、リソースのプロバイダ(ここではベースキャンプ)がJSONPをサポートしていれば、XMLをjavascriptオブジェクトにラップしますそのオブジェクトからxmlコンテンツを抽出します。あるいは、あなたがあなたのページと同じドメインからリソースを要求できるようにする何らかの種類のプロキシを設定することができます。次に、xmlを問題なく直接リクエストすることができます。 –

関連する問題