此代码有问题 我设法从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);
}
});
});
答案 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