ajax sends data to plugin

时间:2012-12-02 作者:fefe

我试图通过jquery ajax将数据发送到我的插件类,以更新表中的一个字段,我得到以下错误

致命错误:调用成员函数query()

我的班级看起来像

class MyClass{

    function __construct(){

        global $wpdb;
        $this->db = $wpdb;
        //add_filter(\'query_vars\', \'parameter_queryvars\' );
    }

//Save ajax datas
    public function save_tips($token, $tips){
            $this->db->query(
                $this->db->prepare(
                    "UPDATE wp_competitors SET results= %s, update_time= %d",
                    $tips ,$cur_date = date(\'Y-m-d H:i:s\'),  "WHERE token = $token
                ") // $wpdb->prepare
            ); 

    }
}
}

当我用ajax发送数据时,输入文件是我的插件主文件,我使用以下代码

if ($_POST[\'results\']){
    $token = \'393a9276ae329e00b3739d2e76e52f3b\';
    $tips = json_encode($_POST[\'results\']);
    $save = new Tipspiel();
    $save->save_tips($token, $tips);

    return \'OK\';
}
似乎所有的wordpress功能都被忽略了

在@toscho反馈后更新代码

我在javascript中添加了以下内容

$j("form#tiepspiel").submit(function(e) {
        e.preventDefault(); // this disables the submit button so the user stays on the page            
        var str = $j(this).serialize();
       //alert(decodeURIComponent(str));
        if ($j(\'ul#sortables li\').size() > 10){

            $j( "#dialog-modal" ).dialog({
                    height: 140,
                    modal: true
                });
            return;
        }
        var data = {
                action: \'TIPPS\',
                     tips: str,
                    _ajax_nonce: "<?php echo wp_create_nonce( \'my_ajax_nonce\' ); ?>"

            };

        $j.post(ajaxurl, data, function(response) {
            alert(\'Got this from the server: \' + response);
            //$j.cookie("tipspiel", "competitor", { expires: 1 });
           $j(\'form#tiepspiel\').fadeOut(\'slow\', function() {
                // Animation complete.
              });
        });              
    }); 
并将其添加到我的插件条目文件中

add_action(\'wp_ajax_nopriv_TIPPS\', \'tipps_processing_function\');



function tipps_processing_function(){
    check_ajax_referer(\'my_ajax_nonce\');

    if ($_POST[\'results\']){
        $token = \'393a9276ae329e00b3739d2e76e52f3b\';
        $tips = json_encode($_POST[\'results\']);
        $save = new Tipspiel();
        $save->save_tips($token, $tips);

        return \'OK\';
    }
    //do stuff here
}
不清楚如何将接收到的变量传递给我的类

1 个回复
SO网友:fuxia

这是行不通的。阅读What's the preferred method of writing AJAX-enabled plugins?

不要试图直接访问插件文件。

结束

相关推荐

如何通过AJAX WooCommerce添加到购物车

我已经找了一段时间了,这个。我想通过AJAX添加一个项目。在Woocommerce中将项目添加到购物车时,页面将使用GET参数重新加载add-to-cart=\"The current product ID\".我想通过AJAX来实现。在管理区域中有一个复选框,用于启用标记为“启用AJAX按钮以添加到产品列表上的购物车”的功能但它什么也不做,它仍在重新加载页面。