2011-08-09 40 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