我在这里检查了所有与此相关的线程,并进行了调试测试。我想了解为什么我自己的代码不起作用,因为它提供了与此问题相关的所有可能创建的线程中解释的相同功能。
我试图在单击复选框时发送AJAX请求,并使用MySQL进行一些工作。
以下是一些详细信息,以了解范围和所做的工作:
var $ = jQuery;
$(function() {
$(\'table.table\').on(\'click\', \'[name="term-id"]\', function() {
var t = $(this),
id = t.val(),
checked = t.is(\':checked\');
checkCategory(id, checked);
});
});
function checkCategory(id, checked) {
$.ajax({
url: ajaxurl,
type: \'POST\',
dataType: \'json\',
data: {action: \'setAsyncCheckProduct\', id: id, checked: checked},
success: function(response) {
alert(response);
},
error: function(errorThrown) {
alert(errorThrown);
}
})
}
此脚本通过以下方式包含在我的插件中:
wp_enqueue_script(\'settings-manager\', $this->pluginUrl . \'/assets/js/SettingsManager.js\');
在我的主(抽象)插件类中(它被实例化并被调用,因此我省略了这个代码示例),但我添加了分配给admin\\u init的异步事件:
add_action(\'admin_init\', [$this, \'assignAsyncEvents\']);
在我的具体类中,我实现了如下方法:
public function setAsyncCheckProduct()
{
var_dump($_REQUEST);
echo 123123123;
wp_die();
}
public function assignAsyncEvents()
{
add_action(\'wp_ajax_setAsyncCheckProduct\', [$this, \'setAsyncCheckProduct\']);
}
这基本上意味着:
向“ajaxurl”发送AJAX请求(返回正确的:/wp admin/admin AJAX.php),操作:setAsyncCheckProduct随服务器一起发送,在服务器上,assignAsyncEvents应该已经完成,并分配了一个wp\\u AJAX\\u MY\\u action\\u名称。
为什么我仍然得到0的响应?
谢谢
UPDATE我一直在手动将调试输出放入admin ajax中。php只是出于好奇。
if ( is_user_logged_in() ) {
/**
* Fires authenticated AJAX actions for logged-in users.
*
* The dynamic portion of the hook name, `$_REQUEST[\'action\']`,
* refers to the name of the AJAX action callback being fired.
*
* @since 2.1.0
*/
do_action( \'wp_ajax_\' . $_REQUEST[\'action\'] );
var_dump(\'wp_ajax_\' . $_REQUEST[\'action\']);
} else {
/**
* Fires non-authenticated AJAX actions for logged-out users.
*
* The dynamic portion of the hook name, `$_REQUEST[\'action\']`,
* refers to the name of the AJAX action callback being fired.
*
* @since 2.8.0
*/
do_action( \'wp_ajax_nopriv_\' . $_REQUEST[\'action\'] );
}
// Default status
die( \'0\' );
这是添加了我的var\\u dump的核心功能。我的AJAX调用到达那里,输出是插件文件中add\\u ACTION中定义的正确操作名称,虽然我的操作没有返回任何内容/没有调用它,但我得到了默认值
die( \'0\' );
真倒霉不知道下一步该怎么办。