但是由于某种原因,当我将变量data放入naughty时,它没有data的内容。
function cookie() {
var naughty = 'aaa';
$.post('/cookie', function(data) {
naughty = data;
});
alert(naughty); // sends "aaa"
}
为什么?
更新:谢谢!现在我明白了,因为 $.post() 是异步的,所以 alert(naughty) 将在它被填充数据之前执行。
现在我有一个子问题:当我关闭异步时,只有函数 cookie() 会推迟执行还是整个浏览器引擎会冻结,直到 AJAX 完成?
更新2:是的,@Kevin B,你是对的,顽皮永远不会被填满......我在第一个代码示例中犯了错误。我很幸运,所有答案都是有效的,只有第二个代码示例:-)
正如@Kevin B 所指出的, async=false 将在 jQuery 1.8 中贬值。它会冻结浏览器,直到请求完成......
子问题 #2:在这个 AJAX 请求之后,我在 cookie() 中有更多代码。那么,我可以以某种方式暂停 cookie() 的执行直到 AJAX 完成,而不用 async=false 冻结整个浏览器?还是我必须找到编码这个想法的新方法(使用完整/成功回调)?
最后编辑:我意识到我想要的是 ASYNC:FALSE ......所以我只是使用它。顺便提一句。ASYNC:FALSE 不会从 jQuery 中删除!只有特殊类型的用例才会......