首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插件管理端的Ajax -返回0

插件管理端的Ajax -返回0
EN

WordPress Development用户
提问于 2022-03-03 09:48:21
回答 1查看 114关注 0票数 0

我已经构建了一个插件,我需要在管理中使用ajax,并在这里遵循了文档:https://codex.wordpress.org/AJAX_在……里面_插件

然而,我一直得到的响应是0。

我知道有很多关于同样问题的帖子,我都看过了,但我无法为我找到解决办法。请帮帮忙。

我为插件使用了一个类,并将jquery放在单独的文件中。

myplugin-admin.js

代码语言:javascript
复制
function getFeatureIDs(selectObject){
    var value = selectObject.value;  
    console.log(value);
    console.log(ajax_object.we_value);
    console.log(ajax_object.ajax_url);
    var data = {
        'action': 'get_etim',
        'whatever': ajax_object.we_value   
    };
   
    
    jQuery.post(ajax_object.ajax_url, data, function(response) {
        alert('Got this from the server: ' + response);

    });

}

类-myplugin-admin.php

代码语言:javascript
复制
class myplugin_Admin {
    private $myplugin;
    private $version;

    public function __construct($myplugin,$version ) {
        
        add_action('wp_ajax_get_etim', 'get_etim');
        add_action( 'wp_ajax_nopriv_get_etim', 'get_etim' );
    }

    public function enqueue_scripts() {

        wp_enqueue_script( $this->myplugin, plugin_dir_url( __FILE__ ) . 'js/myplugin-admin.js', array( 'jquery' ), $this->version, false );

        wp_localize_script( $this->myplugin, 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 ) );
    }

    public function get_etim() {

        echo $_REQUEST['whatever'];

        wp_die();
    }
}

控制台中的Results:

代码语言:javascript
复制
EC003025
1234
https://mytestsite.plesk.page/wp-admin/admin-ajax.php

警惕总是,

“从服务器获得了这个: 0”

这意味着动作函数没有被调用。

拜托,我漏掉了什么?

谢谢

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2022-03-03 11:23:13

这是因为您选择使用类,但没有将add_action更改为帐户:

代码语言:javascript
复制
add_action( 'wp_ajax_nopriv_get_etim', 'get_etim' );

这不是将类函数连接到操作或筛选器的方式。所以Javascript是正确的,但是您的处理程序没有连接到钩子。这就是AJAX处理程序失败的原因,也是add_action使用错误的原因。

这里的解决方案与站点上询问如何挂钩类函数的其他问题相同。

一般性说明:

  • 类的使用不会改进此代码,它不是OO 。
    • 问问自己,它是否意味着要调用get_etim,哪个get_etim?一个类可以多次转换为一个对象,它如何知道该调用哪个对象?如果您只创建/使用它一次,那么类的意义是什么?

  • 这是使用旧的遗留API,您应该通过register_rest_route为AJAX使用新的REST,这避免了许多陷阱,并为您提供了一个可以发出请求的漂亮URL。
  • The法典是旧的,几年前就退休了,可以包含过时的信息。您应该在 https://developer.wordpress.org/上引用开发人员页面
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/403334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档