[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 就好了。