2015-07-19 116 views
1

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

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); 
    })(); 

要么我错过了某些东西或我正在做一些完全错误的事情?

回答

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); 
})(); 
+0

设置'async'属性是不必要的,因为这是从JS创建的脚本元素的默认行为。 –

1

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

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