解決關於jquery中$.get()方法總是報“HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy”錯的方法


解決關於jquery中$.get()方法總是報“HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy”錯的方法

  今天在看《jquery基礎教程(第三版)》第十章的時候,運行隨書下載的源碼時總是不成功。起初以為書中自帶的JS文件有錯呢,但是測來測去也沒發現哪里有問題。現在把源碼附下:

1、這是書中帶的HTML文件,其余的忽略不計,關鍵的就是下面這個a。

<a id="more-photos" href="pages/1.html">More Photos</a>

2、對應的JS文件如下(注意其中關鍵方法為$.get()):

復制代碼
 1 $(document).ready(function() {  2 var pageNum = 1;  3 $('#more-photos').click(function() {  4 var $link = $(this);  5 var url = $link.attr('href');  6 if (url) {  7 $.get(url, function(data) {  8 $('#gallery').append(data);  9  }); 10 pageNum++; 11 if (pageNum < 20) { 12 $link.attr('href', 'pages/' + pageNum + '.html'); 13  } 14 else { 15  $link.remove(); 16  } 17  } 18 return false; 19  }); 20 });
復制代碼

 

3、錯誤。以上看起來似乎沒有問題,但是在火狐和Chrome下測試都報錯,其中火狐debug錯誤如下:

  整個一章的代碼都是這樣,但是測試在IE里沒有問題。於是谷歌、百度各種亂搜一翻,貌似網上發生這樣問題的還不在少數,但是搜來搜去各種回答都 有。一一試了下,發現其中的以為大哥的方法貌似正確,於是查了下jquery api,原來是問題出在$.get()方法上,書中的源碼在使用這個方法的時候都沒有指定這個方法的type參數,即jQuery.get(url, [data], [callback], [type])第四個參數。加上第四個參數‘html’以后就顯示正常了。Okay了!灰常happy!現在運行OK了,已經沒有錯誤了。

  具體方法如下:

  在上面的JS文件中的第7行$.get()方法上增加一個type參數即可,如下(注意第9行增加了一個‘html’的type參數):

復制代碼
 1 $(document).ready(function() {  2 var pageNum = 1;  3 $('#more-photos').click(function() {  4 var $link = $(this);  5 var url = $link.attr('href');  6 if (url) {  7 $.get(url, function(data) {  8 $('#gallery').append(data);  9 },'html'); 10 pageNum++; 11 if (pageNum < 20) { 12 $link.attr('href', 'pages/' + pageNum + '.html'); 13  } 14 else { 15  $link.remove(); 16  } 17  } 18 return false; 19  }); 20 });
復制代碼

  由於是新手,也只找到了怎么解決這個問題,但是沒有找到為什么會出現這樣的問題。以后使用$.ajax()\$.get()等這幾個方法的需要注意一下子了。

  參考:http://blog.sina.com.cn/s/blog_995c1f630101a36l.html(這位大哥的錯誤發生在$.ajax()方法上)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM