Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这个jsonp应该很容易工作,我做错了什么?_Javascript_Jsonp - Fatal编程技术网

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

Javascript 这个jsonp应该很容易工作,我做错了什么?,javascript,jsonp,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",ur

我尝试使用异步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()
。我的控制台显示的错误是:

语法错误:缺少;声明前

"btc_e_btc_set": true,
即使json at完全通过json lint。我做错了什么!!?这应该很简单

如果支持
JSONP
,您将看到该url的响应:

updatePrices({
  // JSON here
});
相反,它只返回原始JSON,如下所示:

{
  // JSON here
}

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

服务不返回JSONP(它返回JSON),因此您不能使用JSONP。检查服务的API文档是否支持JSONP以及如何启用它。如果他们不支持,可能还有其他选项可以从客户端JavaScript访问数据。如果没有,你就不走运了(你必须创建自己的服务器端服务来请求数据)。非常感谢!你能给我解释一下返回jsonp和常规json的区别吗?我认为它是相同的格式,只是不同的技术如何调用它?JSON只是一种数据格式。JSONP更多的是一种如何检索数据的技术。正如您已经在代码中所做的那样,JSONP实际上包含了一个外部JavaScript文件,其中包含一个函数调用:
someCallback(/*data*/)。因此,来自服务器的响应必须是有效的JavaScript。然而,JSON本身不是有效的JavaScript,因此您会遇到这个错误。谢谢Felix!我现在觉得自己很傻,这太明显了!天啊,我终于明白了。非常感谢你,你是个救命恩人。