随笔-46  评论-64  文章-2  trackbacks-0

 

使用DWR做一个demo的时候,总是报出 JS Alert: Max depth exceeded when dereferencing ...


function  update()  {
 
// var name = dwr.util.getValue("demoName");
  var  name  =  document.getElementById( " demoName " );
   UpdateText.sayHello(name, callback);
}


function  callback(data)
{
 
var  d  =  data  +   "   " ;
 dwr.util.setValue(
" demoReply " , d);
}

用上面那一句 var name = dwr.util.getValue("demoName"); 的时候就不会报出这个错误
看了一下util.js的源码,发现其实它返回的是  document.getElementById("xxx").value ,所以我们这里修改为
var name = document.getElementById("demoName").value; 这就和 dwr.util.getValue("demoName") 等价了


util.js 关于getValue函数的源码 

/* *
 * Read the current value for a given HTML element.
 * @see http://getahead.org/dwr/browser/util/getvalue
 
*/

dwr.util.getValue 
=   function (ele, options)  {
  
if  (options  ==   null ) options  =   {} ;
  
var  orig  =  ele;
  
if  ( typeof  ele  ==   " string " {
    ele 
=  dwr.util.byId(ele);
    
//  We can work with names and need to sometimes for radio buttons, and IE has
     //  an annoying bug where getElementById() returns an element based on name if
     //  it doesn't find it by id. Here we don't want to do that, so:
     if  (ele  &&  ele.id  !=  orig) ele  =   null ;
  }

  
var  nodes  =   null ;
  
if  (ele  ==   null {
    
//  Now it is time to look by name
    nodes  =  document.getElementsByName(orig);
    
if  (nodes.length  >=   1 ) ele  =  nodes.item( 0 );
  }

  
if  (ele  ==   null {
    dwr.util._debug(
" getValue() can't find an element with id/name:  "   +  orig  +   " . " );
    
return   "" ;
  }


  
if  (dwr.util._isHTMLElement(ele,  " select " ))  {
    
//  Using "type" property instead of "multiple" as "type" is an official 
     //  client-side property since JS 1.1
     if  (ele.type  ==   " select-multiple " {
      
var  reply  =   new  Array();
      
for  ( var  i  =   0 ; i  <  ele.options.length; i ++ {
        
var  item  =  ele.options[i];
        
if  (item.selected)  {
          
var  valueAttr  =  item.getAttributeNode( " value " );
          
if  (valueAttr  &&  valueAttr.specified)  {
            reply.push(item.value);
          }

          
else   {
            reply.push(item.text);
          }

        }

      }

      
return  reply;
    }

    
else   {
      
var  sel  =  ele.selectedIndex;
      
if  (sel  !=   - 1 {
        
var  item  =  ele.options[sel];
        
var  valueAttr  =  item.getAttributeNode( " value " );
        
if  (valueAttr  &&  valueAttr.specified)  {
          
return  item.value;
        }

        
return  item.text;
      }

      
else   {
        
return   "" ;
      }

    }

  }


  
if  (dwr.util._isHTMLElement(ele,  " input " ))  {
    
if  (ele.type  ==   " radio " {
      
if  (nodes  &&  nodes.length  >=   1 {
        
for  ( var  i  =   0 ; i  <  nodes.length; i ++ {
          
var  node  =  nodes.item(i);
          
if  (node.type  ==  ele.type)  {
            
if  (node.checked)  return  node.value;
          }

        }

      }

      
return  ele.checked;
    }

    
if  (ele.type  ==   " checkbox " {
      
if  (nodes  &&  nodes.length  >=   1 {
        
var  reply  =  [];
        
for  ( var  i  =   0 ; i  <  nodes.length; i ++ {
          
var  node  =  nodes.item(i);
          
if  (node.type  ==  ele.type)  {
            
if  (node.checked) reply.push(node.value);
          }

        }

        
return  reply;
      }

      
return  ele.checked;
    }

    
return  ele.value;
  }


  
if  (dwr.util._isHTMLElement(ele,  " textarea " ))  {
    
return  ele.value;
  }


  
if  (dwr.util._shouldEscapeHtml(options))  {
    
if  (ele.textContent)  return  ele.textContent;
    
else   if  (ele.innerText)  return  ele.innerText;
  }

  
return  ele.innerHTML;
}
;
posted on 2007-08-12 17:54 jht 阅读(4201) 评论(5)  编辑  收藏 所属分类: J2EEDWR

评论:
# re: [DWR]Max depth exceeded when dereferencing 2008-05-27 15:40 | 哈郎
哥们,谢了哈,马上就解决了,就是不大清楚原因  回复  更多评论
  
# re: [DWR]Max depth exceeded when dereferencing 2008-10-28 17:24 | liuqingyin
我也有一个这样得错,改了,还报这个错  回复  更多评论
  
# re: [DWR]Max depth exceeded when dereferencing 2008-12-01 22:39 | 龙纹
谢谢哥们 问题解决了
  回复  更多评论
  
# re: [DWR]Max depth exceeded when dereferencing[未登录] 2011-03-31 16:59 | 菜鸟
顶 我今天也遇到这个问题  回复  更多评论
  
# re: [DWR]Max depth exceeded when dereferencing 2011-09-01 11:46 | tbw
问题解决了 谢谢  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: