解决ajax无法给外部变量赋值
2017-02-28 20:27
211 查看
test.html
<a href="javascript:void(0)" onmouseover="testAsync()">
asy.js
function testAsync(){
var
temp;
$.ajax({
async:
false,
type
: "GET",
url
: 'tet.php',
complete:
function(msg){
alert('complete');
},
success
: function(data) {
alert('success');
temp=data;
}
});
alert(temp+' end');
}
tet.php
<?php
echo
"here is html code";
sleep(5);
?>
async: false,(默认是true);
如上:false为同步,这个 testAsync()方法中的Ajax请求将整个浏览器锁死,
只有tet.php执行结束后,才可以执行其它操作。
当async: true 时,ajax请求是异步的。但是其中有个问题:testAsync()中的ajax请求和其后面的操作是异步执行的,那么当tet.php还未执行完,就可能已经执行了 ajax请求后面的操作,
如: alert(temp+' end');
然而,temp这个数据是在ajax请求success后才赋值的,结果,输出时会为空。
<a href="javascript:void(0)" onmouseover="testAsync()">
asy.js
function testAsync(){
var
temp;
$.ajax({
async:
false,
type
: "GET",
url
: 'tet.php',
complete:
function(msg){
alert('complete');
},
success
: function(data) {
alert('success');
temp=data;
}
});
alert(temp+' end');
}
tet.php
<?php
echo
"here is html code";
sleep(5);
?>
async: false,(默认是true);
如上:false为同步,这个 testAsync()方法中的Ajax请求将整个浏览器锁死,
只有tet.php执行结束后,才可以执行其它操作。
当async: true 时,ajax请求是异步的。但是其中有个问题:testAsync()中的ajax请求和其后面的操作是异步执行的,那么当tet.php还未执行完,就可能已经执行了 ajax请求后面的操作,
如: alert(temp+' end');
然而,temp这个数据是在ajax请求success后才赋值的,结果,输出时会为空。
相关文章推荐
- jQuery闭包解决ajax无法给外部变量赋值利用函数操作$.proxy()
- 解决ajax的success方法无法给外部变量赋值的问题
- js闭包解决ajax无法给外部变量赋值的问题
- ajax请求成功后无法在success方法里给外部变量赋值的问题
- 解决ajax方法内部不能给方法外部变量赋值的问题
- ajax无法给外部变量赋值的问题
- 解决ajax方法内部不能给方法外部变量赋值的问题
- 解决ajax方法内部不能给外部变量赋值的问题
- 解决ajax方法内部不能给方法外部变量赋值的问题
- ajax执行后成功回调函数对外部变量赋值
- 详解闭包解决jQuery中AJAX的外部变量问题
- 细谈 Web Api 图片上传,在使用 Task.ContinueWith 变量无法赋值问题的解决办法!
- ajax执行后调用回调函数对外部变量赋值,不成功的分析
- 细谈 Web Api 图片上传,在使用 Task.ContinueWith 变量无法赋值问题的解决办法!
- 使用闭包解决jQuery中AJAX的外部变量问题
- JQuery中使用Ajax赋值给全局变量失败异常的解决方法
- ajax请求获取的数据无法赋值给全局变量问题总结
- ajax给全局变量赋值问题解决示例
- JQuery中使用Ajax赋值给全局变量异常的解决方法
- 关于在ajax中无法对全局变量进行赋值的原因解读