AJAX post into pop-up div

时间:2013-01-31 作者:vonholmes

我想在单击帖子/页面链接时将内容AJAX发布到弹出式div中。我想出了以下代码:

相关HTML/PHP:

<ul class="links">
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
    <li><a href="<?php the_permalink() ?>"><?php the_title();?></a></li>
<?php endwhile; endif; ?>
</ul>

<div id="hover-box"></div>
jQuery:

$(\'#hover-box\').hide();
$(\'.links a\').click(function( ) {
    var url=$(this).attr(\'href\');
    $(\'#hover-box\').fadeIn();
    $(\'#hover-box\').load(url + \' article\');
    return false;
    });
这很好,但我想知道是否有人可以指出这种方法的缺点。我找到的其他解决方案(例如。https://wordpress.stackexchange.com/a/41062/18329) 看起来要复杂得多。我应该使用其他PHP吗?其他解决方案也使用管理ajax。php(例如。http://deadlyhifi.com/2011/12/loading-frontend-ajax-content-in-wordpress/).

非常感谢您的帮助/建议!

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您的代码不清楚,因为它脱离了上下文,但在我看来,您似乎是通过AJAX上的普通URL加载您的帖子页面,URL如下http://example.com/this-is-a-post/http://example.com/2012/12/01/this-is-a-post/. 这样做的缺点是,您正在将整个WordPress和主题框架加载到弹出窗口中,这可能比您需要的开销大得多,并且比您想要显示的内容多。你会得到页眉和页脚,边栏等。如果这是你想要的,好吧。。。除此之外,您可能正在生成非常破碎的HTML。From the jQuery Docs for .load:

从服务器加载数据,并将返回的HTML放入匹配的元素中。

因此,如果您正在做我认为您正在做的事情,那么您正在嵌套一个完整的网页<html></html> 在另一个里面,这是错误的。

归根结底,你最好是抓住这个职位,它稍微复杂一些,但效率更高。如果你要这么做,你会想admin-ajax.php.

另一个的一些“复杂性”wpse thread 您引用的是脚本的排队。我不知道你是怎么做到的,但你应该按照公认的答案去做of that thread, 通过使用wp_enqueue_script

结束

相关推荐

如何将相对外部的协议入队(//ajax.googleapis.com/...)剧本?

根据Codex, wp\\u enqueue\\u脚本支持协议相关或协议无关的外部链接:“可以使用协议无关的URL指定远程资产,即:“//otherdomain.com/js/theirscript.js”。”但我没有看到:wp_enqueue_script(\'google-maps\', \'//maps.googleapis.com/maps/api/js?&sensor=false\', array(), \'3\', true); 输出:<script type=\'te