$.getJSON()异步请求的问题

$.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;

猜你喜欢

转载自blog.csdn.net/NB_Token/article/details/78083430