这个jsonp应该很容易工作,我做错了什么?

时间:2013-12-27 22:06:42

标签: javascript jsonp

我正在尝试使用异步jsonp在网页上显示实时价格:

function addscript () {
    var url = "http://wdcticker.com/api/ticker?callback=updatePrices" + "&random=" + (new Date()).getTime();
    var newScript = document.createElement("script");
    newScript.setAttribute("src",url);
    newScript.setAttribute("id","jsonp");
    var oldScript = document.getElementById("jsonp");
    var head = document.getElementsByTagName("head")[0];
    if (oldScript == null) {
        head.appendChild(newScript);
    } else {
        head.replaceChild(newScript, oldScript);
    }
    console.log('done');

}

function updatePrices(result){
    alert('got here');
    $('#wdcusd').text(result.wdc_usd_avg);
    $('#wdcbtc').text(result.wdc_btc_avg);
}

每10秒成功调用addscript函数。未调用回调函数updatePrices()。我的控制台显示的错误是:

  

SyntaxError:missing;在陈述之前

"btc_e_btc_set": true,

尽管http://wdcticker.com/api/ticker的json完全通过了json lint。我究竟做错了什么!!?这应该是这么简单!

1 个答案:

答案 0 :(得分:1)

如果http://wdcticker.com/api/ticker?callback=updatePrices支持JSONP,您会希望将此视为该网址的回复:

updatePrices({
  // JSON here
});

相反,它只是返回原始JSON:

{
  // JSON here
}

因此,您尝试连接的服务器似乎不支持JSONP,并且需要服务器端支持。您不能将JSONP任何 JSON API一起使用,API服务器必须明确支持并允许JSONP