繁体   English   中英

通过AJAX调用包含PHP文件

[英]Include PHP file via AJAX call

我试图通过ajax请求调用位于我插件的子文件夹内的.php文件。 我尝试了很多不同的包含方式,包括get_template_part,但似乎无法呈现内容。 我觉得我可能做错了,但是我不确定下一步该怎么做。 该文件位于上方的一个目录中,然后位于另一个称为“模板”的目录中。

tps_show_modal是一个自定义函数,第二个参数是模式框的内容。 (已确认此功能在其他地方有效)。

任何帮助表示赞赏。

PS。 我还需要将变量( spaceID )传递给包含的文件,因此需要使用set_query_var()
PPS。 在Wordpress环境中工作

这是我的ajax请求:

$(document).on('click', '.uiSpaceTitle', function(e) {
    var spaceID = $(this).attr('data-spaceid');
    $.ajax({
        type : 'post',
        dataType : 'json',
        url : myAjax.ajaxurl,
        context : this,
        data: {
            action: 'tps_get_space_info_block_ajax', spaceID:spaceID
        },
        success: function(response) {
            console.log(response);
            var wWidth = $(window).width();
            var dWidth = wWidth * 0.8; //this will make the dialog 80% of the window
            tps_show_modal('Space Info', response, false, 'OK', dWidth);
        }
    });

    e.preventDefault();
});

这是我调用的php函数:

add_action('wp_ajax_tps_get_space_info_block_ajax', 'tps_get_space_info_block_ajax');
add_action('wp_ajax_nopriv_tps_get_space_info_block_ajax', 'tps_get_space_info_block_ajax');
function tps_get_space_info_block_ajax() {
    set_query_var('spaceID', $_REQUEST['spaceID']);
    ob_start();
    include('../templates/space-info-pane.php');
    $result = ob_get_clean();
    $result = json_encode($result);
    echo $result;
    die();
}

答案是当在插件中包含文件时,Wordpress很奇怪。 我必须使用它而不是原始包含文件路径:

include(plugin_dir_path( __DIR__ ).'templates/space-info-pane.php');

在Wordpress Codex页面上的此评论使我到达: https : //developer.wordpress.org/reference/functions/plugin_dir_path/#comment-2085

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM