通过AJAX调用包含PHP文件

时间:2018-03-27 01:36:20

标签: php jquery ajax wordpress include

我试图通过ajax请求调用位于我的插件子文件夹中的.php文件。我已经尝试了很多不同的方法,包括get_template_part,但我似乎无法获取要呈现的内容。我觉得我可能做错了,但我不确定下一步该尝试什么。该文件位于上面的一个目录中,然后位于另一个名为" Templates"的目录中。

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();
}

1 个答案:

答案 0 :(得分:0)

答案是Wordpress在插件中包含文件时很奇怪。我不得不使用它而不是vanilla包含文件路径:

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

Wordpress codex页面上的这条评论让我在那里:https://developer.wordpress.org/reference/functions/plugin_dir_path/#comment-2085