如何把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

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

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下就会有假死的情况,多来两次用户就得有反应了

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]

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

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