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 在 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 回答