我实现了一个wordpress前端php页面,其中包含正文中的超链接列表和页脚中的wpdatatable。
我想在每次用户选择链接时重新加载数据表,这需要通过ajax完成,而不需要重新加载整个页面。
到目前为止我做了什么:
我在 \ wp-content \ themes \ Avada \ functions.php 中定义了我的操作,如下所示:
function tenders_shortcode() {
echo do_shortcode("[wpdatatable id=49 var1=".$_POST['id']." var2=".$GLOBALS['cgv']['archive']."]");
}
add_action('wp_ajax_tenders_shortcode', 'tenders_shortcode'); // add action for logged users
add_action( 'wp_ajax_nopriv_tenders_shortcode', 'tenders_shortcode' ); // add action for unlogged users
在我的主页内,我发出了以下ajax调用:
function toggleTable(ministryId) {
$.post( '<?php echo admin_url('admin-ajax.php'); ?>', {
action: "tenders_shortcode",
id: ministryId
}, function(datatable) {
alert("success");
jQuery("#tendersResult").html(datatable)
});
}
其中&#34; tendersResult&#34; 是一个应该保存数据表的div。
问题是返回的数据表的html包含css链接标记,它总是显示&#34; 0&#34;。
以下是它在浏览器中的显示方式,请参阅0文本:
这就是它在检查员中的显示方式:
请注意,在发布我的问题之前,我做了很多研究,并没有解决我的问题。 任何帮助表示赞赏!!
更新:好的,所以我已经按照Fencer04的建议添加了wp_die(),但我现在的问题是do_shortcode()仍然会返回&#34;&#34;标题中的css标记和数据表返回为&#34; display:none&#34;
答案 0 :(得分:1)
您需要将功能更改为:
function tenders_shortcode() {
echo do_shortcode("[wpdatatable id=49 var1=".$_POST['id']." var2=".$GLOBALS['cgv']['archive']."]");
wp_die(); //Added
}
add_action('wp_ajax_tenders_shortcode', 'tenders_shortcode'); // add action for logged users
add_action( 'wp_ajax_nopriv_tenders_shortcode', 'tenders_shortcode' ); // add action for unlogged users
如果函数末尾没有wp_die(),它将永远不会返回零以外的任何内容。