前兩天項目遇到一個用ajax修改全局變量的案例,一開始無法給這個全局變量修改賦值,在網上查了一下,解決如下:
修改前:
var word=1; $.ajax({ url:"myJSON.json", type:"get", dataType:"json", success:function(data){ word=2; } }); alert(word);
結果:彈出1;
原因:js是單線程的語言,而ajax是異步加載的,可以這么理解,上面的代碼中,先運行完了alert,才運行ajax里的賦值,因此彈出的word的值是1
修改后:
var word=1; $.ajax({ async:false, url:"myJSON.json", type:"get", dataType:"json", success:function(data){ word=2; } }); alert(word);
結果:彈出2
原因:代碼中增加async:false,將ajax修改為同步加載,那么整個代碼就按照先后順序加載完成,因此彈出的word的值是2