$.getJSON()获取文件内容的操作是一个异步请求,如果想将获取的某一个值存起来,类似这样:
var name;
$.getJSON('../js/test.json', function(data){
data.forEach(function(item){
if(item.id == 1) {
name = item.name;
}
})
})
console.log(name);//输出为undefined
结果和预期的一样,在函数外面根本拿不到name的值,因为在执行console.log(name)的时候,由于getJSON的异步回调,name还没有被赋值,所以是undefined。
解决办法就是等getJSON执行完毕后再执行下面的代码。即把异步操作转化成同步操作。方法就是设置:
$.ajaxSettings.async = false;
执行完成后恢复成异步:
$.ajaxSettings.async = true;
就是这样:
var name;
$.ajaxSettings.async = false;
$.getJSON('../js/test.json', function(data){
data.forEach(function(item){
if(item.id == 1) {
name = item.name;
}
})
})
console.log(name);//输出为'testName'
$.ajaxSettings.async = true;