jquery全局变量失败
jquery global variable failing
我想在jquery函数之外使用一些变量,但我无法使它们全局化。我按照建议先"var"它们,然后分配它们,但最后一个 log() 返回未定义。
var lat,lon;
$.get('ip.json',function(data) {
var loc=data['loc'];
lat=loc.split(',')[0];
lon=loc.split(',')[1];
},'json');
console.log(lat,lon);
更新 这是完整的代码
var lat,lon;
$.get('ip.json',function(data) {
console.log(data);
var city=data['city'];
var loc=data['loc'];
lat=loc.split(',')[0];
lon=loc.split(',')[1];
$('body').append(' '+city+' '+lat+' '+lon);
},'json');
console.log(lat,lon);
$.get('apiurl?lat='+lat+'&lon='+lon+'&callback=test',function(data) {},'json'),
给定您的新代码,一个简单的解决方案是嵌套调用:
$.get('ip.json', function (data) {
console.log(data);
var city = data['city'];
var loc = data['loc'];
var lat = loc.split(',')[0];
var lon = loc.split(',')[1];
$('body').append(' ' + city + ' ' + lat + ' ' + lon);
$.get('apiurl?lat=' + lat + '&lon=' + lon + '&callback=test', function (data) {
//handle second response here
console.log(lat, lon);
}, 'json');
}, 'json');
给定更新的代码,您需要挂起依赖于 AJAX 调用处理程序的结果的所有逻辑:
var lat, lon;
$.get('ip.json', function(data) {
console.log(data);
var city = data['city'];
var loc = data['loc'];
lat = loc.split(',')[0];
lon = loc.split(',')[1];
$('body').append(city + ' ' + lat + ' ' + lon);
// at this point you now have the data for your second AJAX call:
console.log(lat,lon);
$.get('apiurl?lat=' + lat + '&lon=' + lon + '&callback=test', function(data){
// do something
},'json'),
},'json');
问题是您正在发出一个异步调用,该调用在调用 console.log
之后返回 。您需要在回调中包含console.log
才能正常工作。
var lat,lon;
$.get('ip.json',function(data) {
var loc=data['loc'];
lat=loc.split(',')[0];
lon=loc.split(',')[1];
console.log(lat,lon);
},'json');
进一步了解
上述人员所说的内容,我相信您可以异步进行 AJAx 调用。看看这里 如何使 JQuery-AJAX 请求同步
您可以使用 ajax asyc 调用
$.ajax({
async: "false",
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "uri",
success: function(data) {
var loc=data['loc'];
lat=loc.split(',')[0];
lon=loc.split(',')[1];
}
});
console.log(lat,lon);
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 从Javascript方法返回全局变量
- AngularJS中的封装窗口全局变量
- javascript隐式全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 如何使全局变量仅特定于该文件
- 在page.open()-PhantomJS中无法访问全局变量
- 使用全局变量来存储数字(JavaScript)
- 如何将变量声明为全局变量
- 在节点中创建文件全局变量
- 在Javascript中使用全局变量作为缓存是很好的
- 创建要在其他函数中使用的全局变量
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 全局变量设置在JavaScript验证中失败
- jquery全局变量失败
- Javascript 函数在全局变量中失败
- javascript全局变量访问失败