【问题标题】:Requesting data from JSONP从 JSONP 请求数据
【发布时间】:2015-07-19 14:11:38
【问题描述】:

我目前正在尝试使用原生 JavaScript 的 JSONP。我正在尝试创建一个从 JSONP 链接读取数据的应用程序。这是JSfiddle。目前,我在控制台中收到一个错误,似乎请求的链接有问题。下面我提交了我的代码的 sn-p:

function readResponse(resonse) {
  document.getElementsByTagName('div')[0].innerHTML = resonse.feed.entry.length + ' entries retured';
 console.log(resonse);
}

(function(){
  var src = '',
  script = document.createElement('script');
 script.src = src;
  document.body.appendChild(script);
  }) ();

要么我遗漏了什么,要么我做错了什么?

【问题讨论】:

    标签: javascript jsonp


    【解决方案1】:

    我们需要一个 jsonp 请求的回调方法,否则它会抛出一个语法错误。当我运行它时,我检查了响应对象没有提要属性

    resonse.feed is undefined.
    

    它具有标记属性。我在下面尝试过,它开始工作了。

    window.readResponse = function(resonse) {
        console.log(resonse);
      document.getElementsByTagName('div')[0].innerHTML = resonse.markers.length + ' entries retured';
      console.log(resonse);
    };
    
    (function(){
      var src = "http://digitaslbi-id-test.herokuapp.com/bus-stops?northEast=51.52783450,-0.04076115&southWest=51.51560467,-0.10225884&callback=readResponse"
      ;
        var script = document.createElement('script');
    
      script.src = src;
        script.async = true;
      document.body.appendChild(script);
    }) ();
    

    【讨论】:

    • 设置async 属性是不必要的,因为这是从 JS 创建的脚本元素的默认行为。
    【解决方案2】:

    您的端点返回纯 JSON。您的浏览器很可能会抱怨语法错误(将左大括号解析为块语句的开头),并且永远不会调用 readResponse

    此特定端点通过附加“回调”参数来支持 JSONP。你的情况是&callback=readResponse

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-02
      • 2019-06-06
      • 2016-05-30
      • 2016-04-28
      • 2019-09-11
      • 2013-12-07
      • 2013-04-25
      • 2015-08-01
      相关资源
      最近更新 更多