Eu tenho um problema com o AJAX retornando 0 sempre!
Eu fiz tudo pelo livro e não consigo descobrir o que está errado? Por favor ajude!!
Aqui está minha chamada do Ajax:
//Pass data through AJAX
var amountToConvert = price;
jQuery.ajax({
type:"POST",
url: "../../wp-admin/admin-ajax.php", // our PHP handler file
action: "ajaxConversion",
data: {
amount: amountToConvert
},
success:function(data){
alert(data);
},
error: function(errorThrown){
alert(errorThrown);
}
});
return false;
E a função em functions.php é:
function ajaxConversion(){
$amount = mysql_real_escape_string($_POST['amount']);
echo $amount;
die();
};
add_action('wp_ajax_nopriv_ajaxConversion', 'ajaxConversion');
add_action('wp_ajax_ajaxConversion', 'ajaxConversion');
admin_url( 'admin-ajax.php' )
para obter o URL AJAX, não um URL inventado.Respostas:
Você poderia colocar a ação (ajaxConversion) nos seus dados e verificar?
fonte
usar
wp_die();
no final da função AJAX corrigiu o problema para mim.por exemplo
fonte
Para mim, o truque era adicionar
wp_ajax_nopriv
ação. Testei o script em um navegador quando estava logado no WP admin, depois tentei o mesmo script no Chrome e percebi que o script não funciona. Depois que eu coloqueiwp_ajax_nopriv
, tudo começou a funcionar. :)fonte
Eu recomendaria usar wp_send_json_success () e wp_send_json_error () no lado do servidor. Você não precisa se preocupar com die () etc, e a variável "status" é enviada automaticamente, é muito mais limpo dessa maneira. Por exemplo
Irá resultar em algo como isto:
Então você pode facilmente extrair os valores da sua chamada ajax:
Outra coisa comum que encontrei são erros de digitação no nome da ação. Eles devem ser wp_ajax_nopriv_ {action} ou wp_ajax_ {action} quando estiver logado. Por exemplo, wp-ajax_nopriv, é o que eu fiz várias vezes no passado.
fonte
Para mim, foi o fato de eu estar usando, em
return
vez deecho
na minha função PHP. Alterando paraecho
corrigi-lo.fonte