Mar*_*tin 1 javascript variables jquery scope
但出于某种原因,当我把可变数据变成顽皮时,它没有数据内容.
function cookie() {
var naughty = 'aaa';
$.post('/cookie', function(data) {
naughty = data;
});
alert(naughty); // sends "aaa"
}
Run Code Online (Sandbox Code Playgroud)
为什么?
更新:谢谢!现在我明白了,因为$ .post()是异步的,所以在充满数据之前会执行alert(顽皮).
现在我有一个小问题:当我关闭异步,只会运行cookie()推迟执行或整个浏览器引擎将冻结,直到AJAX完成?
更新2:是的,@凯文B,你说得对,顽皮永远不会被填充......我在第一个代码示例中犯了错误.我很幸运所有答案都是有效的,只有第二个代码示例:-)
正如@Kevin B所指出的,async = false将在jQuery 1.8中折旧.并冻结浏览器直到请求完成...
子问题#2:在此AJAX请求之后,我在cookie()中有更多代码.那么,我可以以某种方式暂停执行cookie()直到AJAX完成,而不用使用async = false冻结整个浏览器?或者我是否必须找到编写这个想法的新方法(使用完整/成功回调)?
最后编辑:我意识到我想要的是ASYNC:FALSE ......所以我只是用它.BTW.ASYNC:FALSE不会从jQuery中删除!只有特殊的用例才会......