Javascript 丢失的getJson问题之前的语句

Javascript 丢失的getJson问题之前的语句,javascript,jquery,ajax,syntax,getjson,Javascript,Jquery,Ajax,Syntax,Getjson,我有以下代码: function getWeather() { var url = "http://api.openweathermap.org/data/2.5/weather?lat=35& lon=139?jsoncallback=?"; $.getJSON(url, function (data) { console.log(data.id); }); } 根据Firefox,我在第1:8行中发现了一个缺少分号的错误 {"coord":{

我有以下代码:

function getWeather() {
    var url = "http://api.openweathermap.org/data/2.5/weather?lat=35& lon=139?jsoncallback=?";
    $.getJSON(url, function (data) {
        console.log(data.id);
    });
}
根据Firefox,我在第1:8行中发现了一个缺少分号的错误

{"coord":{"lon":139,"lat":35},"sys":{"message":0.0106,"country":"JP","sunrise":1427920171,"sunset":1427965544},"weather":[{"id":800,"main":"Clear","description":"Sky is Clear","icon":"01d"}],"base":"stations","main":{"temp":285.577,"temp_min":285.577,"temp_max":285.577,"pressure":1026.48,"sea_level":1034.31,"grnd_level":1026.48,"humidity":100},"wind":{"speed":5.56,"deg":57.001},"clouds":{"all":0},"dt":1427944893,"id":1851632,"name":"Shuzenji","cod":200}

我找不到错误。

看起来所述资源希望回调参数名称为callback,而不是jsonpcallback

演示:

也可以使用CORS支持

function getWeather() {
    var url = "http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139";
    $.getJSON(url, function (data) {
        console.log(data);
    });
}

演示:

尝试在Chrome的开发者控制台中运行代码确实会出现错误,尽管它抱怨出现意外的冒号:而不是分号;。jQuery似乎期望JSONP作为回报。检查文档可以确认添加一个参数,比如callback=?提示jQuery将结果解释为JSONP,但结果是纯旧JSON

删除jsoncallback=

另一方面,你的链接看起来有点奇怪,似乎有太多的问号?还有一个额外的空间。您还应该删除额外的字符。通常情况下,使用and和ampersand&分隔请求参数

http://api.openweathermap.org/data/2.5/weather?lat=35&% lon=139?jsoncallback=?
                                                       ^       ^
使用以下URL可以得到您期望的结果

http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139

我只有在将JSON对象复制到Firefox控制台时才会出现这个错误。如果我用括号括住对象文字,应该没问题。在我看来,它是有效的json。您的url暗示使用JSONP,而内容显然不是JSONP脚本。当作为语法错误进行计算时,会引发语法错误。
http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139