隨筆-46  評(píng)論-64  文章-2  trackbacks-0

          ?

          使用DWR做一個(gè)demo的時(shí)候,總是報(bào)出 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"); 的時(shí)候就不會(huì)報(bào)出這個(gè)錯(cuò)誤
          看了一下util.js的源碼,發(fā)現(xiàn)其實(shí)它返回的是??document.getElementById("xxx").value ,所以我們這里修改為
          var?name?=?document.getElementById("demoName").value;?這就和 dwr.util.getValue("demoName") 等價(jià)了


          util.js 關(guān)于getValue函數(shù)的源碼?

          /* *
          ?*?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 閱讀(4221) 評(píng)論(5)  編輯  收藏 所屬分類: J2EEDWR

          評(píng)論:
          # re: [DWR]Max depth exceeded when dereferencing 2008-05-27 15:40 | 哈郎
          哥們,謝了哈,馬上就解決了,就是不大清楚原因  回復(fù)  更多評(píng)論
            
          # re: [DWR]Max depth exceeded when dereferencing 2008-10-28 17:24 | liuqingyin
          我也有一個(gè)這樣得錯(cuò),改了,還報(bào)這個(gè)錯(cuò)  回復(fù)  更多評(píng)論
            
          # re: [DWR]Max depth exceeded when dereferencing 2008-12-01 22:39 | 龍紋
          謝謝哥們 問題解決了
            回復(fù)  更多評(píng)論
            
          # re: [DWR]Max depth exceeded when dereferencing[未登錄] 2011-03-31 16:59 | 菜鳥
          頂 我今天也遇到這個(gè)問題  回復(fù)  更多評(píng)論
            
          # re: [DWR]Max depth exceeded when dereferencing 2011-09-01 11:46 | tbw
          問題解決了 謝謝  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 霍林郭勒市| 工布江达县| 泊头市| 山西省| 连江县| 繁昌县| 岐山县| 马龙县| 桑日县| 尤溪县| 平顺县| 宽城| 东源县| 三明市| 灵台县| 固镇县| 玛多县| 永城市| 探索| 永新县| 平果县| 云龙县| 吉林省| 长沙县| 富顺县| 吴堡县| 礼泉县| 库尔勒市| 利津县| 许昌县| 富宁县| 峨山| 中宁县| 开远市| 南平市| 固原市| 中江县| 尚义县| 克拉玛依市| 革吉县| 溆浦县|