jQuery getJSON request returning empty on a valid request

倖福魔咒の 提交于 2019-12-07 07:11:35

问题


I'm trying to grab some JSON from Apple's iTunes JSON service. The request is simple: http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch?term=jac&limit=25

If you visit the URL in your browser you will see some well-formed (backed up by jsonlint.com) JSON. When I use the following jQuery to make the request, however, the request finds nothing:

        $("#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 sees the request, but only receives an empty response.

Any help would be appreciated here, as I'm at my whits end trying to solve it. You can view the script here: http://rnmtest.co.uk/gd/drives_admin/add_drive (soundtrack input box is at the bottom of the page).

Thanks


回答1:


In order to do cross-domain requests, your going to need to use JSONP. This may help:

$.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);
  }
});



回答2:


Or you simply change the url a bit. From

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

to

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

And keep using $.getJSON instead of switching to $.ajax

From the jQuery.getJSON documentation

If the URL includes the string "callback=?" in the URL, the request is treated as JSONP instead.



来源:https://stackoverflow.com/questions/2446282/jquery-getjson-request-returning-empty-on-a-valid-request

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!