4

Apple の iTunes JSON サービスから JSON を取得しようとしています。リクエストは簡単です: http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch?term=jac&limit=25

ブラウザーで URL にアクセスすると、整形式の (jsonlint.com によってバックアップされた) JSON が表示されます。ただし、次のjQueryを使用してリクエストを作成すると、リクエストは何も見つかりません:

        $("#soundtrack").keypress(function(){
            $.getJSON("http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch",{'term':$(this).val(), 'limit':'25'}, function(j){              
                var options = '';
                for (var i = 0; i < j.results.length; i++) {
                    options += '<option value="' + j.results[i].trackId + '">' + j.results[i].artistName + ' - ' + j.results[i].trackName + '</option>';
                }
                $("#track_id").html(options);
            });
        });

Firebug はリクエストを確認しますが、空のレスポンスしか受け取りません。

私はそれを解決しようとしているので、ここで助けていただければ幸いです。ここでスクリプトを表示できます: http://rnmtest.co.uk/gd/drives_admin/add_drive (サウンドトラック入力ボックスはページの下部にあります)。

ありがとう

4

2 に答える 2

7

または、単に URL を少し変更するだけです。から

http://ax.phobos.apple.com.edgesuite.net/.../wa/wsSearch"

http://ax.phobos.apple.com.edgesuite.net/.../wa/wsSearch?callback=?"

$.getJSON切り替えずに使い続ける$.ajax

jQuery.getJSON ドキュメントから

URL に文字列 "callback=?"が含まれている場合、リクエストは代わりにJSONPとして扱われます。

于 2010-03-15T10:49:26.313 に答える
4

クロスドメインリクエストを実行するには、JSONPを使用する必要があります。これは役立つかもしれません:

$.ajax({
  url: "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch",
  dataType: 'jsonp',
  data: {'term':$(this).val(), 'limit':'25'}, 
  success: function(j){              
    var options = '';
    for (var i = 0; i < j.results.length; i++) {
      options += '<option value="' + j.results[i].trackId + '">' + j.results[i].artistName + ' - ' + j.results[i].trackName + '</option>';
    }
    $("#track_id").html(options);
  }
});
于 2010-03-15T10:17:06.077 に答える