我正试图从Apple的iTunes JSON服务中获取一些JSON。请求很简单: http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch?term=jac&limit=25
如果您在浏览器中访问该网址,您会看到一些格式正确(由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(音轨输入框位于页面底部)。
由于
答案 0 :(得分:7)
或者您只是稍微更改了网址。从
http://ax.phobos.apple.com.edgesuite.net/.../wa/wsSearch"
到
http://ax.phobos.apple.com.edgesuite.net/.../wa/wsSearch?callback=?"
继续使用$.getJSON
而不是切换到$.ajax
来自jQuery.getJSON documentation
如果URL包含字符串 URL中的
"callback=?"
,即请求 被视为 JSONP 。
答案 1 :(得分: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);
}
});