Quelle est la méthode préférée pour écrire des plugins compatibles AJAX?

48

Je me demande quelle est la méthode préférée pour traiter les appels AJAX. Faut-il utiliser le même fichier plugin php pour traiter le POST ou un fichier séparé? Qu'est-ce qui est plus propre ou plus sûr?

    
posée James 13.02.2011 - 02:32
la source

1 réponse

47

La méthode "plus sûre et plus propre" consisterait à utiliser admin-ajax.php fourni avec wordpress et wp_ajax hook pour vous appeler une fonction de traitement depuis votre fichier de plug-in et à utiliser wp-nonce pour vérifier l'intégrité de l'appel.

par exemple:

votre appel ajax JQuery serait

<script type="text/javascript" >
jQuery(document).ready(function($) {

    var data = {
        action: 'ACTION_NAME',
            Whatever: '1234',
            _ajax_nonce: '<?php echo wp_create_nonce( 'my_ajax_nonce' ); ?>'

    };

    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
    // If you need it on a public facing page, uncomment the following line:
    // var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
    jQuery.post(ajaxurl, data, function(response) {
        alert('Got this from the server: ' + response);
    });
});
</script>

l'ajouter dans votre fichier de plugin

//if you want only logged in users to access this function use this hook
add_action('wp_ajax_ACTION_NAME', 'my_AJAX_processing_function');

//if you want none logged in users to access this function use this hook
add_action('wp_ajax_nopriv_ACTION_NAME', 'my_AJAX_processing_function');

* si vous voulez que les utilisateurs connectés et les invités accèdent à votre fonction en ajaxant l’ajout des deux points. * ACTION_NAME doit correspondre à la valeur d'action dans votre POST ajax.

alors dans votre fonction, assurez-vous que la requête provient d'une source valide

function my_AJAX_processing_function(){
   check_ajax_referer('my_ajax_nonce');
   //do stuff here
}

J'espère que cela vous aidera

    
réponse donnée Bainternet 13.02.2011 - 03:14
la source

Lire d'autres questions sur les étiquettes