无法从加载了AJAX的页面中检索任何内容

时间:2015-11-23 作者:drake035

一旦my_file.php 是通过Ajax加载的,我无法从中获取任何WordPress内容,即使WordPress函数运行时没有生成任何错误消息。请注意,我是用老派的方式来做Ajax的(用WordPress做Ajax的新常规方式对我来说太复杂了)。

JS公司:

var root_path;
var host_address = document.location.hostname;              
if (host_address == \'127.0.0.1\') { 
    root_path = \'http://127.0.0.1/wordpress/my_project\';
    var local_server = 1; 
}
else {
    root_path = host_address;   
    var local_server = \'\';  
}   
var x = \'wp-content/themes/my_project/my_file.php\';
if (local_server == 1) x = root_path + \'/\' + x;             
else x = \'http://\' + root_path + \'/\' + x;   

$.ajax({
    type: "post",
    url: x,
    data: $(this).serialize(),      
    success: function(msg){
        $( \'.container\' ).html(msg);
    }
});     
然后在my\\u文件中。php:

require_once( "../../../wp-config.php" );
。。。这使我能够访问WP功能。之后,get\\u categories()只返回“uncategorized”,query\\u posts()完全不返回任何内容(完全相同的调用从非Ajax页面返回大量类别和帖子)

$args = array(
    \'orderby\' => \'name\',
    \'parent\' => 0
);
$categories = get_categories( $args ); 

//

query_posts(array ( \'posts_per_page\' => -1 ));
while ( have_posts() ) : the_post();
    echo \'<li>\';
    the_title();
    echo \'</li>\';
endwhile;

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

正确的答案是以正确的方式使用AJAX。

将脚本排队并本地化以将路径添加到admin-ajax.php:

function wpd209588(){
    wp_enqueue_script(
        \'wpd209588_script\',
        get_template_directory_uri() . \'/js/your-script.js?ver=1.0\',
        array( \'jquery\' )
    );
    wp_localize_script(
        \'wpd209588_script\',
        \'WPaAjax\',
        array(
            \'ajaxurl\' => admin_url( \'admin-ajax.php\' )
        )
    );
}
add_action( \'wp_enqueue_scripts\', \'wpd209588_scripts\' );
在中your-script.js, 执行AJAX调用:

jQuery(document).ready(function($){
    $.post(
        WPaAjax.ajaxurl,
        {
            action : \'wpd209588_ajax\'
        },
        function( response ){
            $( \'.container\' ).html( response );
        }
    );
});
将AJAX处理程序映射到AJAX脚本中调用的操作:

function wpd209588_ajax_function(){
    global $wp_query;
    $args = array(
        \'posts_per_page\' => -1
    );
    $wp_query = new WP_Query( $args );
    while ( have_posts() ) : the_post();
        echo \'<li>\';
        the_title();
        echo \'</li>\';
    endwhile;
    exit;
}
add_action( \'wp_ajax_wpd209588_ajax\', \'wpd209588_ajax_function\' );
add_action( \'wp_ajax_nopriv_wpd209588_ajax\', \'wpd209588_ajax_function\' );

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct