jsonとjQueryとAjax – IEで失敗する

私はSpotifyにjson/ajaxを呼び出すためにjQuery(1.7.0)を使用しています。次のコードはChromeとFirefoxでは正常に動作しますが、IEではエラーが発生します(エラー:アクセスが拒否されました)。

 $.ajax({
     url: 'http://ws.spotify.com/lookup/1/.json',    
     type: 'GET',    
     dataType: 'json',    
     cache: true,    
     data: {    
       uri: "someartist",    
       extras: "album"    
     },    
     success: successfn,    
     error:function(xhr, status, errorThrown) {    
       alert("networking error: "+errorThrown+'n'+status+'n'+xhr.statusText);    
     }
 });

成功関数はChromeとFFで呼び出されますが、上記のメッセージでIEでエラー関数が呼び出されます。私は本当のことをしている:
jQuery.support.cors = true;

ChromeとFFの両方でローカルと自分のサーバーで動作しますが、IEではローカルでは動作しますが、サーバーでは動作しません。
cache:false
を変更すると、spotify側で問題が発生します。追加のパラメータがないため、「不正なリクエスト」エラーが発生します。

任意のポインタに感謝します。

ありがとう

アボ

ベストアンサー

すべてのドメインからのクロスドメイン要求を許可するために、ヘッダーに
Access-Control-Allow-Origin:* を与えるためにspotify
URLに依存しています。インターネットエクスプローラはこれをサポートしていないので、アクセスが拒否されます。

access-control-allow-origin explained. (TLDR:
Servers may allow cross domain ajax in their headers)

これがIEで動作する必要がある場合は、spotifyのJSONP
APIを使用するか、すべてのブラウザで動作するAJAXリクエストをフラッシュで作成し、リクエスト応答データをjavascriptに渡すことができます。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です