【发布时间】:2017-06-16 19:35:01
【问题描述】:
这是当有人单击 a 标签元素时调用 ajax 函数的 jquery 部分。我想要做的是从该标签元素中获取数据值,将其传递给 php 函数,然后使用传入的字符串变量运行 php 函数。 Jquery 部分工作,我可以发送数据值,但 PHP 函数甚至没有运行,不知道我做错了什么。
$(function(){
$('#catFilter a').on('click', function(e){
e.preventDefault();
$(this).fadeOut(300);
var x = $(this).attr('data-slug');
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
$.ajax({
url: ajaxurl,
type: 'post',
data: {data: x, action: 'filter'},
success: function(data, status) {
console.log(x);
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
}
}); // end ajax call
});
});
还有PHP部分,我想将A标签元素中的数据值添加到PHP数组中,然后用传入的参数运行函数。
function filter(){
$x = $_POST['data'];
array_push($needleArray, $x);
post_filter();
die();
}
add_action('wp_ajax_filter', 'filter');
add_action('wp_ajax_nopriv_filter', 'filter');
【问题讨论】:
-
ajax 'type' 应该是 post 的 'method'。另外,我强烈建议您不要使用 die() 命令。
-
我使用它是因为在执行 Wordpress AJAX 时显然需要在 PHP 函数中使用它。另外,我将类型更改为方法,似乎仍然不起作用。 javascript 部分确实将数据发送到 AJAX.php 文件,但 functions.php 中的 PHP 似乎甚至没有运行。我将它设置为回显接收到的任何内容,但它似乎没有回显任何内容。