最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php - Wordpress ajax doesn't display object method on jQuery .change() function

programmeradmin0浏览0评论

I'm coding a plugin that will be fetching data from the database and display it into a table.
I want to get a page with a select tag that will always be on the plugin's main page, select something and get it into the main page. So basically changing pages via the select tag without reloading the page.
The problem is, it seems that when the page is called via the ajax method, the object method (that worked when displaying it directly in the main page) doesn't work anymore.
I don't know if it's possible to make it work at all, if it's not, please tell me.

Plugin main page:
<?php
/*
Plugin Name: MRL validation
Description: Vérification et acceptation des adhérents.
Author: Ben
Version: 1.0
*/

if (!class_exists('MRL_validation')) {
    class MRL_validation
    {
        function __construct()
        {
            include_once plugin_dir_path(__FILE__) . '/MRL_validation_plugin.php';
            $inst_plugin = new MRL_validation_plugin();
            if (isset($inst_plugin)) {
                add_action("admin_menu", array($inst_plugin, 'mrl_plugin_menu'));
            }

            if (isset($_POST['action'])) {
                add_action(
                    'wp_ajax_mrl_validation_admin',
                    array($inst_plugin, 'mrl_validation_admin_ajax')
                );
            }
        }
    }
}

if (class_exists('MRL_validation')) {
    $mrl_val = new MRL_validation();
}

Plugin back end page:

<?php

class MRL_validation_plugin
{
    function mrl_plugin_menu()
    {
        $pagePlugin = add_menu_page('MRL Validation', 'MRL Validation', 'administrator', 'MRL_Validation.php', array($this, 'mrl_validation_admin'), 'dashicons-valid');
        add_action('admin_head-' . $pagePlugin, array($this, 'mrl_validation_admin_head'));
    }

    public static function getauditeurslist() //this method is called
    {
        global $wpdb;
        $sql = "SELECT a.idAuditeur,a.Nom,a.Pays,a.Depuis,a.Ville,a.Age,a.Portrait,a.Email,a.Presentation,a.DecouverteMrl,a.RejoindreCaa,a.ApporterCaa,a.RoleCaa,a.Commentaire,a.idStatut,a.ValidationInscription,ca.type FROM Auditeurs AS a LEFT JOIN CAAStatuts AS ca ON a.idStatut = ca.idStatut WHERE a.ValidationInscription = 0 ORDER BY idAuditeur";
        $auditeurslist = $wpdb->get_results($sql);
        return $auditeurslist;
    }

    function editAuditeur($champ, $value, $id) 
    {
        global $wpdb;
        $sql = $wpdb->prepare(
            "UPDATE Auditeurs SET " . $champ . "='" . $value . "' WHERE idAuditeur =" . $id
        );
        $req = $wpdb->query($sql);
        return $req;
    }

    function mrl_validation_admin_head()
    {
        wp_register_style('mrl_validation_admin_css', plugins_url('css/mrl-validation-admin.css', __FILE__));
        wp_enqueue_style('mrl_validation_admin_css');
        wp_enqueue_style('font-awesome-5', '.15.2/css/all.min.css', array(), null);
        wp_enqueue_script('mrl-validation-js', plugins_url('js/mrl-validation-js.js', __FILE__), array('jquery'));
        wp_localize_script('mrl-validation-js', 'mrlvalidationadmin', array(
            'ajaxurl' => admin_url('admin-ajax.php'),
            'action' => 'mrl_validation_admin',
            'nonce' => wp_create_nonce('mrl_validation_admin')
        ));
    }

    function mrl_validation_admin_ajax()
    {
        check_ajax_referer('mrl_validation_admin', 'nonce');
        $update = $this->editAuditeur($_POST['field'], $_POST['value'], $_POST['id']);
        exit();
    }

    function mrl_validation_admin()
    {
        require_once('template-admin.php');
    }
}

ajax call:

jQuery(document).ready(function ($) {
    $("#status").change(function () {
        var val= $("#status").val();
        $("#content").load("/wp-content/plugins/MRL-validation/" + val, function(response, status, xhr) {
            if (status == "error") {
                console.log(msg + xhr.status + " " + xhr.statusText);
            } else {
                console.log(msg + xhr.status + " " + xhr.statusText);
            }
          });
        
    });
});
发布评论

评论列表(0)

  1. 暂无评论