web-dev-qa-db-fra.com

Retour de l'appel Ajax

Mon code est le suivant:

   $("#member_country").change(function() {
        var country = $(this).val();
        alert(country);
        var ajax_url_mtypes = ins_membership_ajax.ajax_url + '?action=ins_get_membershiptypes_from_country&country='+country;
        alert(ajax_url_mtypes);
        jQuery.ajax({
        url:ajax_url_mtypes,            
        method:'GET',
        contentType: "application/json;charset=utf-8",
        success:function(response) {
          //var resp = $.trim(response);
          alert(response);
          //$("#ins-member-profile-select-state").html(resp);
      }
      });

  add_action('wp_enqueue_scripts',array(INS_Membership::get_instance(),'ins_event_front_scripts'));

 public function ins_event_front_scripts(){
    wp_register_script('member-front-script',plugins_url('/js/member-front-script.js', __FILE__),array('jquery'),'1.1',true);
    //localize script for ajax url
    wp_localize_script( 'member-front-script','ins_membership_ajax', array(
        'ajax_url' => admin_url('admin-ajax.php')
    ));
    wp_enqueue_script('member-front-script');
    //enqueue styles
    wp_register_style('member-front-styles',plugins_url('/css/member-front-styles.css', __FILE__));
    wp_enqueue_style('member-front-styles');

}

add_action('wp_ajax_ins_get_membershiptypes_from_country',array(INS_Membership::get_instance(),'ins_get_membershiptypes_from_country_callback'));

Je reçois une réponse 0 pour l'appel Ajax. Que dois-je faire pour résoudre ce problème?

1
Karts

Lorsque vous définissez un gestionnaire Ajax, vous devez envisager de définir à la fois les utilisateurs connectés et les utilisateurs non connectés. Vous pouvez le faire en utilisant:

add_action('wp_ajax_my_handler', 'callback_function');
add_action('wp_ajax_nopriv_my_handler', 'callback_function');

Maintenant, quant à votre question. Nous pouvons transformer ce code en un noeud final REST, si cela vous intéresse, ce qui est plus rapide et plus facile à configurer. Commençons par définir un itinéraire.

add_action( 'rest_api_init', function () {
    register_rest_route( 'karts', '/ins_get_membershiptypes_from_country/', array(
            'methods' => 'GET',
            'callback' => 'ins_get_membershiptypes_from_country_callback'
    ) );
});

À ce stade, nous pouvons exécuter notre quête en accédant à:

www.example.com/wp-json/karts/ins_get_membershiptypes_from_country/

Maintenant, l'appel Ajax. Utilisez-le pour localiser votre script et transmettez l'URL du site:

wp_localize_script( 'member-front-script','ins_membership_ajax', array(
    'ajax_url' => site_url()
));

Nous pouvons donc accéder au chemin dans notre appel Ajax:

   $("#member_country").change(function() {
        var country = $(this).val();
        alert(country);
        var ajax_url_mtypes = ins_membership_ajax.ajax_url + '/kartsins_get_membershiptypes_from_country';
        alert(ajax_url_mtypes);
        jQuery.ajax({
        url:ajax_url_mtypes,            
        method:'GET',
        data : { country : country},
        dataType: 'json',
        success:function(response) {
          //var resp = $.trim(response);
          alert(response);
          //$("#ins-member-profile-select-state").html(resp);
      }
      });

Ce n’est pas que j’ai défini un type de données JSON pour l’appel. De cette façon, vous obtiendrez une réponse Json par défaut.

0
Jack Johansson