我用ajax从取出一个List数据,并把其转换成Json对象,想利用循环讲数据放入一个dtree里,但发现根本添加不了,各位帮我看看问题出在哪。js和css已经导进,也验证过正常使用能用
<div class="dtree">
<script type="text/javascript">
function AJAXRequest() {  //ajax连接,已验证过,没问题
var xmlObj = false;
var CBfunc,ObjSelf;
ObjSelf=this;
try { xmlObj=new XMLHttpRequest; }
catch(e) {
try { xmlObj=new ActiveXObject("MSXML2.XMLHTTP"); }
catch(e2) {
try { xmlObj=new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e3) { xmlObj=false; }
}
}
if (!xmlObj) return false;
this.method="POST";
this.url;
this.async=true;
this.content="";
this.callback=function(cbobj) {return;}
this.send=function() {
if(!this.method||!this.url||!this.async) return false;
xmlObj.open (this.method, this.url, this.async);
if(this.method=="POST") xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlObj.onreadystatechange=function() {
if(xmlObj.readyState==4) {
if(xmlObj.status==200) {
ObjSelf.callback(xmlObj);
}
}
}
if(this.method=="POST") xmlObj.send(this.content);
else xmlObj.send(null);
}
}
         //从这开始使用dtree
var d = new dTree('d');
function getMenu(){
//alert("aa");
var ajax = new AJAXRequest();
ajax.url = "${pageContext.request.contextPath}/servlet/MenuServlet.servlet?task=getMenuList&date="+new Date();
ajax.callback = function(data){
var str = data.responseText;
var objArray = eval("("+str+")");
for(var i = 0;i<objArray.length;i++){
var obj = objArray[i];
//alert(obj.menuId + "\t" + obj.parentId + "\t" + obj.menuName + "\t" + obj.menuUrl);//已见证,数据能够取到
d.add(obj.menuId,obj.parentId,obj.menuName,obj.menuUrl);//这步为题最大,数据添加不进去
}
//alert(d);
document.write(d); //在页面上打印不出树 }
ajax.send();

} getMenu();
</script>

解决方案 »

  1.   

    dtree 就是四个参数 你写用模拟数据试试
    有可能是URL 路径不对~
      

  2.   

    试过了,放在getMenu方法外能成功,放到方法里就失败了
      

  3.   

    var d = new dTree('d');
    这句一定是放在getMenu()外面的,放在外面相当于全局变量,ajax.callback这个可以认为是另外一个函数了。所以放外面的时候,在ajax.callback可以找到d这个对象,放里面就变成局部变量了,别外一个函数是不能引用的。
      

  4.   

    晕 你把这个getMenu方法的代码挪到方法外面 把这个方法体删掉
    你直接getMenu();  这个方法就没有触发执行呀 
    而你的tree是在页面加载时就要创建的 所以直接写在script 标签内就行了