2009-06-05 14 views
7

私はlast.fm APIに対して同期リクエストを行う必要がありますが、GETとjsonを一緒に使用すると、リクエストは非同期になります。同期jquery jsonリクエスト

私のコード:

$.ajax({ 
     async: false, 
    dataType: "json", 
    url: "http://ws.audioscrobbler.com/2.0/?method=artist.getimages&artist="+artist+"&api_key="+apiKey+"&format=json&callback=?", 
    success: function(html){ 
      imgURL = html.images.image[1].sizes.size[0]["#text"]; 
    } 
}); 

私がデータ型削除する場合:「JSONを」またはPOSTを使用し、それが再び同期だが、私はJSONとGETの両方を使用して依存です。

アイデア?

答えて

13

ああ、これはクロスドメインリクエストをしようとしており、クロスドメインリクエストが動的スクリプトタグに依存しているためです。同期することはできません。データ型jsonとGETメソッドを使用する必要があります。

POSTを実行するか、データ型を削除すると、same-originポリシーのためにアクセスエラーが発生します。それはただちに返されますが、失敗として返されます。

+0

hmmm、私は別の方法を見つけなければならないと思います...とにかく返事をありがとう。 –

+0

彼はJSON文字列をテキストとして返し、JSON文字列をwww.sony.orgのjson2.jsを使ってsuccess()関数でオブジェクトにパーズしますか? –

+0

@Lunchy彼の側でリクエストをリダイレクトすることはできません。別のドメインからデータを取得する唯一の方法は、スクリプトタグとコールバック関数を使用することです。コールバック関数をURLとして指定することによって、サービスが正確にその方向に向いているように見えます。ブロックをシミュレートすることはできますが、Javascript 1.7を使用するだけです。 http://hyperstruct.net/2008/5/17/synchronous-invocation-in-javascript-part-1-problem-and-basic-solution http://www.neilmix.com/2007/02/07/threading -in-javascript-17 / – cgp