我有一个表格短代码,应根据选择框中的值进行编辑,但我无法使其工作。我到目前为止:
短代码语法:[table id=tableID filter="filterstring" \]
,其中可以省略滤镜部分。
HTML:
<div>
<select class="filter-products">
<option value="all">All</option>
<option value="product1">product1</option>
<option value="product2">product2</option>
</select>
<div class="filter-table-doc">[table id=Doc /]</div>
</div>
jquery的:
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
jQuery(".filter-products").on( "change", function() {
var productTypeNew = jQuery(".filter-products").attr("value");
jQuery.ajax({
url: ajaxurl,
data: {
'action':'get_table_doc_shortcode',
'product' : productTypeNew
},
success:function(data) {
jQuery(".filter-table-doc").html(data);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
});
PHP:
function get_table_doc_shortcode(){
if ( isset($_REQUEST) ) {
$product = $_REQUEST['product'];
if ( $product == 'all' ) {
$product = '[table id=Doc /]';
}
else {
$product = '[table id=Doc filter="' + $product + '" /]';
}
return $product;
}
die();
}
add_action('wp_ajax_get_table_doc_shortcode', 'get_table_doc_shortcode');
add_action('wp_ajax_nopriv_get_table_doc_shortcode', 'get_table_doc_shortcode');
这会在日志中生成错误; GET http://www.myurl.com/%3C?php%20echo%20admin_u…n-ajax.php%27);%20?%3E&action=get_table_doc_shortcode&product=product1 404 (Not Found)
。
现在我感到完全陷入困境,已经浪费了太多时间。有任何想法吗?
答案 0 :(得分:0)
看起来您的Javascript是在.js
文件而不是.php
文件中调用的。这意味着您使用的PHP功能无法正常工作。您看到的错误是因为JS正在读取"<?php echo admin_url('admin-ajax.php'); ?>"
的字符串值而不是您想要的ajax网址。如果您正在尝试访问admin-ajax.php
的网址,请按照docs:
从版本2.8开始,可以使用JavaScript全局变量ajaxurl,以防您希望将JavaScript代码与php文件分离为仅JavaScript文件。 仅在管理方面这是真的。
因此,只需从代码中删除行var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
,因为ajaxurl
已全局定义。