jquery的AJAX方法的返回值为什么在IE下正常,而在FF和chrome下却返回空值? 代码如下:

<SCRIPT>functiongetTemp(link){alert('已经进入函数');vartemp=null;$(document).ready(function... <SCRIPT>
function getTemp(link){
alert('已经进入函数');
var temp=null;
$(document).ready(function(){
$.ajax({
url:encodeURI(link),type:'GET',timeout:3000,dataType:'html',
error:function (){
temp=0;alert('temp :'+temp); return temp;
},
success:function (result){
temp=1;alert('temp :'+temp); return temp;
}
});
});
return temp;
}
function test(){
var temp=getTemp('/');
alert('temp is:'+temp);//为什么在IE下是1,而在ff和chrome下,temp的值是 null,而不是 1
return temp ;
}
</SCRIPT>
<input name='key' type='button' id='key' value='test' onclick='test();' />
我已经试过 jquery1.4.2 和1.6.2两个版本都不行,现在连IE也不行了,
展开
 我来答
fengzhiyu_double
2011-07-19 · TA获得超过906个赞
知道小有建树答主
回答量:514
采纳率:0%
帮助的人:521万
展开全部
ajax默认是异步的,因为调用ajax还没调完的时候,你的test就已经执行了,当时的temp还是null,只有在ajax执行完了以后,temp才是你ajax得到的值。

你想让ajax改成同步的,可以加上async:false,

加在url:encodeURI(link),type:'GET',timeout:3000,dataType:'html',后面就可以
lifei6671
2011-07-19 · TA获得超过9228个赞
知道大有可为答主
回答量:3899
采纳率:25%
帮助的人:2771万
展开全部
一楼回答的正确.因为ajax默认是异步执行,ff和ie对ajax的执行也少有不同.这样的话,你的ajax还没有返回值,你的下一步alert已经执行了.当然就回去不到值了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-07-19
展开全部
我直接给你代码:

<SCRIPT>
function getTemp(link){
alert('已经进入函数');
var temp=null;
$.ajax({
url:encodeURI(link),type:'GET',timeout:3000,dataType:'html',
error:function (){
temp=0;
alert('temp :'+temp);
return temp;
},
success:function (result){
temp=1;alert('temp :'+temp);
return temp;
}
});

}
function test(){
var temp=getTemp('/');
alert('temp is:'+temp);//为什么在IE下是1,而在ff和chrome下,temp的值是 null,而不是 1
return temp ;
}
</SCRIPT>
<input name='key' type='button' id='key' value='test' onclick='test();' />
-----------------
这样就可以了。
也就是说,ajax 获取有一些慢!ajax 还没有获取到一部的值,你已经 return 了。
因为在 ff,chrome 中,ajax 是非常快的,而ie的效率、性能是极其低的,所以才会有这样的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式