我正在尝试使用异步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。我究竟做错了什么!!?这应该是这么简单!
答案 0 :(得分:1)
如果http://wdcticker.com/api/ticker?callback=updatePrices支持JSONP
,您会希望将此视为该网址的回复:
updatePrices({
// JSON here
});
相反,它只是返回原始JSON:
{
// JSON here
}
因此,您尝试连接的服务器似乎不支持JSONP
,并且需要服务器端支持。您不能将JSONP
与任何 JSON
API一起使用,API服务器必须明确支持并允许JSONP
。