[英]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.