NCS123456
NCS123456
采纳率0%
2012-11-26 18:30

如何把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 iteye_1767 9年前

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

    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 blogzhoubo 9年前

    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]

    点赞 7 评论 复制链接分享
  • javaStudyeye javaStudyeye 9年前

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

    点赞 评论 复制链接分享
  • dever2011 dever2011 9年前

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

    点赞 评论 复制链接分享

相关推荐