web-dev-qa-db-fra.com

WordPress Ajax ne fonctionne pas (page Admin personnalisée)

J'ai essayé de faire une petite chose en utilisant Ajax. J'essaie juste de remplacer une div.

C'est ce que j'ai fait jusqu'à présent.

J'ai créé un menu administrateur en utilisant add_menu_page.

Ensuite, j'ajoute un formulaire à cette page avec un champ de texte. J'ai juste besoin de remplacer une div lorsque vous cliquez sur le bouton Soumettre. Mais cela n'a pas fonctionné. Quand je vérifie la console dans le navigateur, il indique Uncaught TypeError: Impossible de lire la propriété 'ajax' de undefined


function myajaxfunction() {
    $.ajax({ //ajax request
        url: ajaxurl,
        data: {
            'action':'rs_like_request',
            'post_type' : $('#post_type').val() // value of text box having id "post_type"

        },
        success:function(data) {  //result
         $(".showdiv").html(data); //showdiv is the class of the div where we want to show the results
        },
        error: function(errorThrown){
            console.log(errorThrown);
        }
    });  

}

<form action="" method="post">
    <label>Write post type : </label>
    <input type="text" name="post_type" id="post_type" value=""/>
    <input type="button" value="Show Post Titles" onclick="myajaxfunction()"/>

    <div class="showdiv"></div>

</form>

function rs_like_count() {

    if ( isset($_REQUEST) ) {   // $_REQUEST is having all the data sent using ajax
        $post_type= $_REQUEST['post_type'];
        echo $post_type;

}
 die();
}
add_action( 'wp_ajax_rs_like_request', 'rs_like_count' );
1
Sasa1234

Uncaught TypeError: Impossible de lire la propriété 'ajax' de non définie

@ Sasa1234 , cela se produit car votre jQuery n'est pas défini. S'il vous plaît jeter un oeil @ EAMann answer . Donc, votre code JS devrait ressembler à ceci:

function myajaxfunction() {
    if ( undefined !== window.jQuery ) {
        jQuery.ajax({ //ajax request
            url: ajaxurl,
            data: {
                'action':'rs_like_request',
                'post_type' : jQuery('#post_type').val() // value of text box having id "post_type"

            },
            success:function(data) {  //result
             jQuery(".showdiv").html(data); //showdiv is the class of the div where we want to show the results
            },
            error: function(errorThrown){
                console.log(errorThrown);
            }
        });  
    }
}
1
Jevuska