我在 Stackexchange 的 Wordpress 端询问了这个问题,但没有任何答案可以引导我去任何地方,所以希望这里有人能提供帮助。对不起,如果这个交叉帖子违反了规则。原件在这里。https://wordpress.stackexchange.com/questions/95075/jquery-ajax-call-not-executing-in-plugin
我一直在为我的免费插件开发一个类,它输出一个“捐赠”表单。“不,谢谢”解雇链接隐藏表单并运行 AJAX 调用以更新 WP 选项以跟踪解雇。
我在让被调用的 PHP 函数真正触发时遇到问题。我添加了“成功”函数来输出我添加到由 AJAX 调用的 PHP 函数的回显(通常,该函数没有输出,只有 WP 选项更新),但“数据”始终为 0,并且在数据库。
我在这个插件中有几个其他的 AJAX 调用,所有这些调用都有效,但这是唯一一个在类中的调用。在课程开发的早期,它起作用了,但我不知道我能做些什么来打破它。我什至尝试将其剥离为仅声明 AJAX 注册和输出测试消息但没有成功的函数。
我猜 WP 出于某种原因实际上无法使用该功能。
这是我的 jQuery AJAX 调用的相关部分
// Create the AJAX data
ajax_call_data = {
'action': 'dismiss_ppd_dmgr',
'nonce': $nonce
};
// Call the AJAX function to update the options
jQuery.ajax({
url: ajaxurl,
type: 'post',
data: ajax_call_data,
success: function(data) { alert( data ) }
});
在课堂上,我有一个属性 ajax_call,它是在类实例化时设置的,我正在像这样添加对 Wordpress 的调用。我已验证 $this->ajax_call 已正确填充,并且还尝试对其进行硬编码,而不是使用变量。
add_action( 'wp_ajax_' . $this->ajax_call , array( &$this , 'dismiss_form' ) );
$this->ajax_call 输出“dismiss_ppd_dmgr”。我回应了 wp_filter 并发现 wp_ajax_dismiss_ppd_dmgr 在我的班级中注册指向dismiss_form()。但结果始终为 0,并且数据库中没有任何更新。
我尝试过的事情:
- 有和没有 &
- 硬编码而不是使用 $this->ajax_call
- 直接在构造函数中调用 add_action 并将其放入由 admin_init 操作调用的函数中
在类之外创建 AJAX add_action 作为
add_action( 'wp_ajax_dismiss_ppd_dmgr' , array( $ppd_dmgr , 'dismiss_form' ) );
有没有人知道为什么 WP 不喜欢我的 AJAX 调用?