在WordPress中调用由AJAX调用实例化的类方法

时间:2014-09-07 作者:Kalimah

我在Wordpress中有一个ajax调用,用于实例化一个类。我希望能够在其他函数中调用类方法。

下面是要演示的代码。

Ajax调用:

  kalimahJS(".a").click(function() {

        var data = {
            \'action\': \'list_items\'
        };

        kalimahJS.ajax({
            url: ajaxurl,
            type: "POST",
            data: data,
            success: function(data, textStatus, jqXHR) {
                console.log(data);
            }
        })
    })
PHP类:

<?php
class Plugin
{
    var $itemsClass;

    public function __construct()
    {

        add_action(\'wp_ajax_list_items\', array(
            $this,
            \'list_items\'
        ));
    }

    function list_items()
    {
        // Get class instance
        $this->itemsClass = new itemsClass();

        echo "success";
        die();
    }

    function another_function()
    {
        // Can\'t access this function
        $this->itemsClass->list_items();

        return false;
    }
}
我无法访问list_items() 方法$this->itemsClass 因为它是从Ajax调用实例化的。还有别的方法吗?

1 个回复
SO网友:Shazzad

您的类方法需要static 在不初始化类或public 以便在不引用的情况下从类本身访问&. 和变量$this->itemsClass 还需要公开。所以解决方法是-

class Plugin
{
    public $itemsClass;

    function __construct()
    {

        add_action(\'wp_ajax_list_items\', array(
            $this,
            \'list_items\'
        ));
    }

    public function list_items()
    {
        // Get class instance
        self::$itemsClass = new itemsClass();

        echo "success";
        die();
    }

    public function another_function()
    {
        // Can\'t access this function
        self::$itemsClass->list_items();

        return false;
    }
}

结束

相关推荐

使用jQuery和AJAX访问API

作为概念证明,我正在尝试使用jQuery和AJAX访问API,并将结果发布到页面。在完成了一些在线教程并尽最大努力将其整合在一起之后,我有以下几点:功能。php://Fire Customizr require_once( get_template_directory() . \'/inc/init.php\' ); function my_init() { if (!is_admin()) { wp_deregister_script(\'jque