2012-01-24 248 views
2

我使用jQuery地址来启用从其他页面加载特定内容 并更改地址栏中的URL。从AJAX加载页面中的另一个页面加载div

我正在一个小社交网络的网站上工作,所以我通过PHP读取我的MySQL数据库的posts表的ID 。我想使用jQuery和AJAX动态地读取所有东西的可能性。

我发现了,我必须使用live()(这竟然是旧的),delegate()(其中 也竟然是在1.7.1旧)或on()(这将会是最好的可能性 通过jQuery + AJAX使事件在动态加载的内容中工作)。

我也读的地方,我不能用load()get()从已加载内容的内部另一 页面加载新的内容,因为它没有“泡沫”(我甚至不知道什么 这意味着)。

在装入AJAX的页面中加载新内容需要做些什么?

这里有一个片段我试图与工作(包括加载的页面上):

<?php 
    if(exist('`posts`')) { 
     $load = mysql_query('SELECT `id` FROM `posts` ORDER BY `id` DESC LIMIT 10'); 
     while($row = mysql_fetch_object($load)) { 
?> 
      <script type="text/javascript"> 
       $('body').on('body', 'load', function() { 
        $.get('getpost.php', { pid: <?= $row->id ?> }, function (data) { 
         $('#posts').html($('#post_<?= $row->id ?>', data).html()).show(); 
        }); 
        $('#posts').off('load'); 
       }); 
      </script> 
<?php 
     } 
    } 
    else { 
?> 
    <div align="center">No posts yet.</div> 
<?php 
    } 
?> 

getpost.php是我的文件,从中我可以得到div_$row->id,使其出现在开始页面上。

PLUS(仅为您的知识添加)我希望内容加载内容时不需要使用鼠标悬停,点击或模糊事件 。

感谢。

回答

0

我是唯一一个认为这种方法完全错误的人吗?您为每个帖子发出ajax请求,这可能会导致太多请求,从而严重减慢加载时间。我不明白为什么你不想直接在PHP while循环中写帖子的HTML。

+0

声音的逻辑和像一个更好的解决方案。有没有像你告诉我的。谢谢! :-) –

+0

您可能想要在PHP代码中分块N个块,然后在用户滚动到可见内容的末尾或点击“下一步”按钮时使用ajax加载下一块N块无论你的UI如何提供。 PHP代码一次只生成大约一页内容的页面是合理的,然后生成更多的页面以响应用户活动。 – technomage

1

如果您希望将特定的事件映射动态应用于与其选择器匹配的任何新DOM元素,则需要使用“.live()”。或者,您可以将行为附加到加载的每个内容块。

编写和开发你的ajax负载独立于你的数据库查找,使事情变得更简单。以下片段在每个元素加载后触发另一个Ajax调用。

<?php 
$id = 'div'.mt_rand(); 
$counter = isset($_REQUEST['counter']) ? $_REQUEST['counter'] : 0; 
$next = $counter + 1; 
echo <<<END 
<div id="{$id}">{$counter} 
<script> 
$(function() { 
    $.ajax('/url?counter={$next}', function(html) { 
     $(html).appendTo($('#{$id}').parent()); // or whatever your favorite method is for adding a sibling 
    }); 
}); 
</script> 
</div> 
END; 
?> 
+0

感谢您的帮助。解决方案(查找上面)。尽管您的解决方案可能对我网站的其他部分非常有用。非常感谢! –

相关问题