Je n'ai jamais utilisé ajax dans wordpress auparavant et j'essaie de faire une simple requête en ajax en suivant des didacticiels vidéo sur youtube, mais le message d'erreur suivant est toujours renvoyé: Impossible de charger la ressource: le serveur a répondu avec un statut de 400 (requête incorrecte)
Mon javascript (à l'intérieur de mon propre fichier de modèle):
jQuery.ajax({
url: ajaxurl,
type: "POST",
dataType: 'json',
data: {
action: 'my_action'
},
success: function ( response ) {
console.log("success");
alert("success");
},
error: function( error ){
console.log("error");
alert("error");
}
});
mon fichier functions.php:
<?php
add_action('wp_ajax_my_action', 'insertEmail');
add_action('wp_ajax_nopriv_my_action', 'insertEmail');
function insertEmail(){
echo "<script> alert('functions fil'); </script>"
die();
}
?>
Voici un extrait de base que j'utilise pour AJAX soumis dans Wordpress, il pourrait vous aider:
<?php
if (isset($_POST['my_theme_ajax_submit']))
if ( wp_verify_nonce( $_POST['nonce'], 'my_theme_ajax_submit' ) )
my_theme_ajax_submit();
function my_theme_ajax_submit() {
// do something
// some php code that fires from AJAX click of #fire
wp_mail( '[email protected]', 'my_theme_ajax_submit() fired', time());
wp_die();
}
?>
<button id='fire'>Fire Something</button>
<script>
jQuery('#fire').click(function(){
jQuery.ajax({
type: 'post',
data: {
"my_theme_ajax_submit": "now",
"nonce" : "<?php echo wp_create_nonce( 'my_theme_ajax_submit' ); ?>"
},
success: function(response) {
jQuery('#fire').text("Somthing Done!");
},
error: function(response) {
jQuery('#fire').text("...error!");
},
});
});
</script>
Cela peut être mieux construit - logeant les scripts dans wp_enque_script()
, ayant la condition my_theme_ajax_submit()
check/tir à un point d'ancrage tel que init
(au lieu d'un modèle), ou en utilisant bon wp_ajax_(action)
crochets (ne semblent jamais fonctionner pour moi) - mais cela devrait donner une idée.