2011-08-09 80 views
0

我正在嘗試使用jQuery來獲取服務器上另一頁的html內容,並將其顯示在當前頁面上。使用alert()函數我可以看到需要寫入的確切html,但是,當我嘗試追加時,它會導致某種錯誤,並且當我加載頁面時什麼都不顯示。我也嘗試將html存儲到變量中,並使用document.write()將其添加到頁面,但發現該變量爲空...任何幫助將不勝感激。jQuery:從成功函數內調用append()

<script type="text/javascript"> 
    var totalPages = $("#hidden_navinfo .totalpages").text(); 
    var currentPage = $("#hidden_navinfo .startpage").text(); 
    var next = ""; 
    for (var i = 1, len = totalPages; i < len; i++) 
    { 
     var count = i+1; 
     //$("#posts").load("/page/ .page"); 
     $.get(("/page/" + count), function(data) { 
      var begin = data.indexOf("<!--BEGIN POST DATA-->")+22; 
      var end = data.indexOf("<!--END POST DATA-->"); 
      next = data.substring(begin, end); 
      alert(next); //displays the correct html 
      $(".posts").append(next); //Causes nothing to be displayed 
     }); 
     alert(next); //returns null 
    } 
</script> 

據我所知,這應該將存儲在「下一個」中的文本添加到class =「posts」的div中。腳本直接放在這個div後面。

我在做什麼錯了?

(正在被提取的HTML可以在這裏找到:http://www.trivialreviews.com/ext/sample.html) (腳本是由調用的頁面可以在這裏找到:http://fuckmodernity.tumblr.com/tagged/series1/

+0

可以張貼正確地顯示在您的警報的HTML更好?也許問題在那裏... –

+0

是的,它可以在上面的鏈接中找到。 – Madison

+0

沒有類'posts'的元素 – LeeR

回答

1

,我能想到的第一件事是,該文件尚未完全加載,並且$('.posts')調用正在返回一個空對象。

嘗試包裝你的腳本文件準備好處理,如

jQuery(function($) { 
    // your script 
}); 

另外,我建議追加新的內容到一個單一的元素,通過ID來標識。你可能會有多個元素與class="posts"這會造成混淆。

$('#ajax-content-div').append(next); 

另一個提示,你的JavaScript控制檯(通常是按Ctrl + Shift + J)是用於調試比發出警報,

console.log(next); 
+0

中運行。我應該補充一點,當我用「

test

」這樣簡單的html字符串替換「next」變量時,那麼append可以正常工作,這意味着它必須是html的問題......但是html似乎是格式正確,因爲它在自己的頁面上正確加載。 – Madison

+0

此外,即使當html被插入到顯示設置爲'none'的不同div中時,屏幕仍然顯示爲空白... – Madison