如何恢复Jesson的价值并将其放入外部变量

时间:2019-04-25 22:59:47

标签: javascript ajax

此代码有问题 我设法从json中获取值并将其放入变量中,但无法在函数外部使用它们 我在做什么错了?

var sensor_name1;
var lat1;
var lng1;
var sensor_name2;
var lat2;
var lng2;
var sensor_name3;
var lat3;
var lng3;



 $(function (){
 var $sensors = $('#sensors');

 $.ajax({
 type:'GET',
 url:'http://127.0.0.1:5000/',
 success: function(sensors){
 $.each(sensors, function(i, sensor) {
 if (i==0){
 $sensors.append(sensor_name1=sensor.name, lat1=sensor.lat, lng1=sensor.lng);
 }
 if(i==1){
 $sensors.append(sensor_name2=sensor.name, lat2=sensor.lat, lng2=sensor.lng);
 }
 if (i==2){
 $sensors.append(sensor_name3=sensor.name, lat3=sensor.lat, lng3=sensor.lng);
 }


 });

console.log('sensor one : ',sensor_name1, lat1, lng1);
console.log('sensor tow : ',sensor_name2, lat2, lng2);
console.log('sensor three : ',sensor_name3, lat3, lng3);

  }
 });

});

1 个答案:

答案 0 :(得分:0)

您好,欢迎访问Stack Overflow:)

JavaScript Ajax是异步的,您必须在这些变量接收值之前执行 console.log()

但是在您的情况下,您传递给 append(),该接受一个 htmlString Element Text Array jQuery 参数是值表达式的赋值。您没有追加孩子,但是您使用 append()

声明了孩子

您必须等待服务器的响应,然后再使用它。

$(function () {
    var $sensors = $('#sensors');

    $.ajax({
        type: 'GET',
        url: 'http://127.0.0.1:5000/',
        success: function (sensors) {
            $.each(sensors, function (i, sensor) {
                let sensorInfo = 'sensor #'+i+': '+sensor.name+' '+sensor.lat+' '+sensor.lng;

                console.log(sensorInfo);
                $sensors.append('<p>'+sensorInfo+'</p>')
            });

        }
    });

});

问候,李子!

来源:

在MDN上异步https://developer.mozilla.org/en-US/docs/Glossary/Asynchronous

jQuery文档https://api.jquery.com/jQuery.get/#jQuery-get-url-data-success-dataType