var _validateInfo = document.getElementById("validateInfo");
_validateInfo.innerHTML = null;

UserAction.insertUserCheck(userID,function(checkResult){
if("s" == checkResult){
_validateInfo.innerHTML = "available";
}else{
_validateInfo.innerHTML = "unavailable";
}
alert("innerHTML::"+_validateInfo.innerHTML)

});

alert("innerHTML::"+_validateInfo.innerHTML);
提问:为什么insertUserCheck方法里面的alert("innerHTML::"+_validateInfo.innerHTML)能正确显示。
     而方法外面的alert("innerHTML::"+_validateInfo.innerHTML)确总是null.
     如何把dwr的返回值正确赋值给外面这个变量

解决方案 »

  1.   

    UserAction.insertUserCheck(userID,function(checkResult) 这个方法是你页面上触发事件之后执行的操作对吧?
    那肯定会按照你function里写的_validateInfo.innerHTML等于 "available"或者"unavailable"二者之一,这个没有问题的,也就是方法里面的alert("innerHTML::"+_validateInfo.innerHTML)能正确显示。
    而方法外面的alert("innerHTML::"+_validateInfo.innerHTML),你没有在事件触发后去调用,只是在页面载入时候运行的,这个时候的 _validateInfo.innerHTML的值肯定是你上面_validateInfo.innerHTML = null; 这句话赋值的结果。
    所以你所的现象就很好理解了,的确是这样执行的
      

  2.   

    ajax 是异步传输的,在调用你的回调函数的时,已经执行了你的最后一句.所以总是NULL是对的.在回调函数中是不可能把没有的值赋给外面
      

  3.   

    1楼说的对
    先要触发Ajax才能有值