为什么YQL工作,而不是JSONP



我想做一些跨域数据请求。首先,我尝试在YQL和它工作:

<script type="text/javascript">
$(document).ready(function(){
   var myURL = 'http://example.com';
   var xpathVariable = '...';
   var yql = "http://query.yahooapis.com/v1/public/yql?q=" + encodeURIComponent("SELECT * FROM html WHERE url='" + myURL + "'") + "%20AND%20xpath%3D'%2F%2Fdiv%5B%40id%3D%22" + xpathVariable + "%22%5D" + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=?";
   jQuery.getJSON(yql, function(data){
      var divToUpdate = $('#container');
      jQuery.each(data.query.results.span, function(i, spanItem){
         $('<div>' + spanItem.content + '</div>').appendTo(divToUpdate);
         if(i == 4) return false;
      });
   });
});
</script>

div容器中显示的结果与预期一致。

然后我想我会给它一个jQuery的JSONP的尝试,这里是代码:

<script type="text/javascript">
$(document).ready(function(){
   var myURL = 'http://example.com/search?type=2561&location=1562';       
   jQuery.ajax({
       type: 'GET',
       url: myURL,
       dataType: 'jsonp',
       jsonp: false,
       jsonpCallback: 'requestCallback',                        
       error: function(xhr, status, error){
          alert('error');
       }
   });
   function requestCallback(data){
       console.log(data);
   }     
});
</script>

此时,我只想在控制台日志中显示回调json数据,我不确定我做错了什么,因为它抛出了错误消息。由于JSONP静默失败,我无法确定代码的哪一部分是错误的。有人能帮忙吗?

看这是雅虎提供的网络服务。据我所知,这个web服务在后台使用一些web抓取工具,它会从你提供的url中提取数据,然后以JSON的形式返回提取的数据。

相关内容

  • 没有找到相关文章

最新更新