1

我在 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 调用?

4

0 回答 0