J'essaie de valider et de soumettre un formulaire à l'aide de AJAX dans WordPress. Toutefois, la réponse que je reçois est 0. D'après le codex , cela semblerait indiquer que admin-ajax est incapable de trouver les fonctions que j'ai définies.
Qu'est-ce que je fais mal?
<script type="text/javascript">
jQuery(function()
{
jQuery(document).on('click', '#test-button', function()
{
var name = jQuery("#name").val();
var AdminAJAX = <?php echo json_encode(admin_url('admin-ajax.php')); ?>;
var ajaxparams = {
action: 'jp_ajax_request',
name: name
};
jQuery.post( AdminAJAX, ajaxparams, function( response )
{
alert(response);
});
}
}
</script>
<?php
add_action( 'wp_ajax_jp_ajax_request', 'jp_ajax_process');
add_action( 'wp_ajax_nopriv_jp_ajax_request', 'jp_ajax_process');
function jp_ajax_process()
{
echo 'ajax response';
die();
}
?>
<form action="">
<input type="text" id="name">
<button id="test-button">Submit</button>
</form>
Votre add_action()
appelle les gestionnaires AJAX trop tard.
Si vous ajoutez ces crochets plus tôt, la meilleure action est probablement wp_loaded
:
add_action( 'wp_loaded', 'register_ajax_handlers' );
function register_ajax_handlers()
{
add_action( 'wp_ajax_jp_ajax_request', 'jp_ajax_process');
add_action( 'wp_ajax_nopriv_jp_ajax_request', 'jp_ajax_process');
}
Voir aussi: Déboguer AJAX .
Ce code doit être placé dans un plugin ou dans le functions.php
de votre thème.