+ -
当前位置:首页 → 问答吧 → jquery 回调函数 赋值

jquery 回调函数 赋值

时间:2010-09-26

来源:互联网

代码如下。
function loadMsg(){
  var title = '';
  var type = '';
  var content = '';
  var msglist1 = new Array();
$.ajax({
url: 'message/SystemMessageAction.do?method=findSystemMessagelist',
type: 'GET',
dataType: 'xml',
timeout: 1000,
error: function(){
alert('Error loading XML document');
},
success: function(xml){
  var node = xml.selectNodes("//msg");
for(var i=0;i<node.length;i++){
  title = $(node[i]).find('title').text();
  type = $(node[i]).find('type').text();
  content = $(node[i]).find('content').text();
  var msg = new Msg(title,type,content);
   
  }
   
  }
});
alert(title);//此处为什么总是空字符串,但是上面的循环已经赋值了。为什么不再记录最后一次赋值结果
}

作者: cheneyfeng3   发布时间: 2010-09-26

明白了。原来是因为异步通信的问题。我最下面的打印是不会当回调函数执行完成后才调用。所以系统在执行alert(title);的时候,异步数据正在组合,所以,当然没有赋值。

作者: cheneyfeng3   发布时间: 2010-09-26

如果上面的循环已经赋值了,title结果还是空,会不会是最后一次赋值为空。。

作者: lyq123333321   发布时间: 2010-09-26

引用楼主 cheneyfeng3 的回复:
代码如下。
function loadMsg(){
var title = '';
var type = '';
var content = '';
var msglist1 = new Array();
$.ajax({
url: 'message/SystemMessageAction.do?method=findSystemMessage……


同步就好了,或是用setTimeout延时下

作者: IBM_hoojo   发布时间: 2010-09-26

CSS code

异步不等待,所以上面的代码还在执行。没有执行完你就取title了。导致没有值

作者: IBM_hoojo   发布时间: 2010-09-26