NCS123456
2012-11-26 18:30
采纳率: 0%
浏览 488
已采纳

如何把ajax返回的responseText赋值给外部变量

[code="java"]
function setHtml(){
var html = "";
$.getJSON("ajax!getList",function(data){
html = data.section;
alert(html);//这里就能取到html,但是外部html变量没有改变
});
alert(html);//这里答应就是空字符串
}
[/code]
请问有没有什么方法把$.getJSON("ajax!getList",function(data){});内的变量的值赋值给外部的html

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • iteye_1767 2012-11-27 10:31
    已采纳

    这种情况最好是把处理响应的逻辑写到匿名名方法里面:

    function setHtml(){

    $.getJSON("ajax!getList",function(data){

    html = data.section;

    alert(html);
    //处理响应的逻辑写在这
    });

    }

    如果处理逻辑很长,你写一个函数在外面就好了:
    function setHtml(){

    $.getJSON("ajax!getList",function(data){

    html = data.section;

    afterGetList(html);
    });

    }

    function afterGetList(html){
    alert(html);
    //处理响应的逻辑写在这
    }

    同步方法最好不用,网络出点小状态IE下就会有假死的情况,多来两次用户就得有反应了

    点赞 打赏 评论
  • blogzhoubo 2012-11-26 19:03

    getJSON缺省是异步的,所以最后一条alert(html);语句会在回调函数调用之前执行,所以此时你得到的是空串。

    解决方法是让getJSON同步执行,这样,只有回调函数执行完以后,才会执行最后一条alert(html);

    [code="js"]function setHtml(){
    var html = "";
    $.getJSON("ajax!getList",{async:false},function(data){
    html = data.section;
    alert(html);//这里就能取到html,但是外部html变量没有改变
    });
    alert(html);//这里答应就是空字符串
    }[/code]

    点赞 打赏 评论
  • dever2011 2012-11-27 09:35

    貌似是这样的,LZ可以试一下

    点赞 打赏 评论
  • javaStudyeye 2012-11-27 12:52

    :D 很简单,只要把 async 这个属性 设置成 false 就好了。

    点赞 打赏 评论

相关推荐 更多相似问题