Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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 jQuery JSON获取问题_Javascript_Json_Jquery - Fatal编程技术网

Javascript jQuery JSON获取问题

Javascript jQuery JSON获取问题,javascript,json,jquery,Javascript,Json,Jquery,我试图从JSON文件中获取信息,但数据变量中没有任何内容。谁能告诉我我做错了什么。JSON文件是下载的,所以我没有从服务器上获取任何东西是没有问题的 function handle_geolocation_query(position) { var url = "http://ws.geonames.org/findNearByWeatherJSON?lat=" + position.coords.latitude + "&lng=" + position.coords.long

我试图从JSON文件中获取信息,但数据变量中没有任何内容。谁能告诉我我做错了什么。JSON文件是下载的,所以我没有从服务器上获取任何东西是没有问题的

function handle_geolocation_query(position) {
    var url = "http://ws.geonames.org/findNearByWeatherJSON?lat=" + position.coords.latitude + "&lng=" + position.coords.longitude + "&callback=?";
    $.getJSON(url, function(info){
        var clouds = info.weatherObservation.clouds;
        var weather = info.weatherObservation.weatherCondition;
        var temp = info.weatherObservation.temperature;
        var humidity = info.weatherObservation.humidity;
    });
    //console.log(clouds);
    document.getElementById('result').innerHTML = "C:" + clouds + ", W:" + weather + ", T:" + temp + ", H:" + humidity;
}
谢谢你的帮助。
非常感谢。

您应该尝试将修改innerHTML的代码放在回调中。请记住,JS具有函数作用域。您无法在外部访问这些变量。此外,这些变量仅在执行检索JSON的回调后设置

function handle_geolocation_query(position) {
    var url = "http://ws.geonames.org/findNearByWeatherJSON?lat=" + position.coords.latitude + "&lng=" + position.coords.longitude + "&callback=?";
    $.getJSON(url, function(info){
        var clouds = info.weatherObservation.clouds;
        var weather = info.weatherObservation.weatherCondition;
        var temp = info.weatherObservation.temperature;
        var humidity = info.weatherObservation.humidity;
        $('#result').html("C:" + clouds + ", W:" + weather + ", T:" + temp + ", H:" + humidity);
    });
}
编辑:根据政府的建议,无论何时发现需要更改innerHTML,都应该使用jQuery API的封装html()方法

此外,您还可以使用:

console.log(info);

在getJSON回调中调试时,只是为了确保数据按您认为的方式进行结构。

尝试执行以下操作,我认为它可能是作为对象数组出现的

var clouds = info.weatherObservation.clouds;
        var weather = info[0].weatherObservation.weatherCondition;
        var temp = info[0].weatherObservation.temperature;
        var humidity = info[0].weatherObservation.humidity;

使用firebug,您可以检查网络面板上的json选项卡,它是否返回您正在访问的相同结构。还有一个建议,不管您使用jquery,请使用.html()而不是.innerhtml,您可以简单地说(“#result”).html();weatherObservation是一个对象数组还是单个对象。“数据变量中没有任何内容”与“JSON文件已下载”的说法相矛盾。要么它带着什么回来,要么它没有。哦,天哪,你救了我这么多的悲痛。我真的很感谢你的帮助。非常感谢。@Aayus,正如Rabifire所说的,这可能是结构问题,我想你没有进入它返回的方式。。。??在正常访问对象属性时,firebug控制台上是否有错误?如果错误,它会抛出错误,@Ayush在修复问题后告诉我们,只是想知道问题出在哪里。