jquery ajax将php加载到指定的div中

时间:2014-01-07 14:32:00

标签: php jquery ajax wordpress

当点击链接时,我正在尝试将php文件加载到div #main中。 html内容加载但文件中包含的实际php代码没有。这就是我所拥有的:

链接以触发所有内容:

<a id="nav" href="http://domain.com/inc/file.php">

jQuery的:

jQuery(document).ready(function($) {

    $("#nav").on('click', function (e) {
        e.preventDefault();
        $("#main").empty();

        $.ajax({
            url: $("#nav").attr('href')
        }).done(function(data) { 
            $('#main').html(data); // display data
        });
    }); 

});

来自file.php的代码(主要是WordPress功能):

<div id="hostels" class="section cf">

    <?php get_a_post(31); ?>

    <article id="swiss" <?php post_class('swiss bg col span-1-3'); ?> role="article">
        <h3>
            <a href="<?php the_permalink(); ?>">
                <span class="logo-pl-small"><?php include(TEMPLATEPATH . '/library/svg/logo.svg'); ?></span>
                <span class="">Swiss Cottage &ndash; London UK</span>
            </a>
        </h3>
        <?php if ( has_post_thumbnail()) { the_post_thumbnail(); } ?>
        <div class="entry-content">
            <?php the_excerpt(); ?>
            <?php edit_post_link( __( 'Edit', 'bonestheme' ) ); ?>
            <?php if ( get_post_meta($post->ID, 'vidlink', true) ) { 
                echo apply_filters('the_content', get_post_meta($post->ID, 'vidlink', true)); 
            } ?>
         </div>
    </article>

</div>

输出:

<div id="main">
    <div id="hostels" class="section cf">
    </div>
</div>

文件开始加载,但一旦到达<?php get_a_post(31); ?>,文件就不会继续加载。

我可能错了,但我认为通过使用$.ajax php代码将在服务器上执行,并且它输出的代码将加载到我的#main div中。

2 个答案:

答案 0 :(得分:3)

所以我有点有点工作了。 我发现this tutorial for Ajax Powered Loops with jQuery and WordPress从中我发现(正如我猜测的那样)我创建的文件需要理解WordPress函数。为此,我需要包括:

require_once('../../../../wp-load.php');

就我而言,这是file.php的相关路径。

仍然存在一些问题,例如插件生成的短代码无法完全正常工作,但这超出了原始问题的范围。

在上面的教程中有很多关于ajax和Wordpress的有用信息,但如果有人遇到类似的问题,我建议你阅读。

答案 1 :(得分:1)

而不是

$.ajax({
  url: $("#nav").attr('href')
}).done(function(data) { 
  $('#main').html(data); // display data
});

为什么不是更简单的

$("#main").load('http://domain.com/inc/file.php');

...