Ich habe ein Problem damit, dass AJAX immer 0 zurückgibt!
Ich habe alles nach dem Buch gemacht und kann nicht herausfinden, was los ist? Bitte helfen Sie!
Hier ist mein Ajax-Anruf:
//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;
Und die Funktion in functions.php ist:
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' )
zum Abrufen der AJAX-URL, nicht einer erfundenen URL.Antworten:
Könnten Sie die Aktion (ajaxConversion) in Ihre Daten einfügen und überprüfen?
quelle
Mit
wp_die();
am Ende der AJAX-Funktion wurde das Problem für mich behoben.z.B
quelle
Für mich war der Trick,
wp_ajax_nopriv
Action hinzuzufügen . Ich habe das Skript in einem Browser getestet, als ich in WP admin angemeldet war. Dann habe ich dasselbe Skript in Chrome ausprobiert und festgestellt, dass das Skript nicht funktioniert. Nachdem ich gesetzt hattewp_ajax_nopriv
, fing alles an zu arbeiten. :)quelle
Ich würde empfehlen, wp_send_json_success () und wp_send_json_error () auf der Serverseite zu verwenden. Sie brauchen sich keine Gedanken über die () usw. zu machen, und die "Status" -Variable wird automatisch gesendet. Auf diese Weise wird es viel sauberer. Beispielsweise
Wird zu so etwas führen:
Dann können Sie die Werte in Ihrem Ajax-Aufruf ganz einfach extrahieren:
Eine andere häufige Sache, auf die ich gestoßen bin, sind Tippfehler im Aktionsnamen. Sie sollten wp_ajax_nopriv_ {action} oder wp_ajax_ {action} lauten, wenn Sie angemeldet sind. Zum Beispiel wp-ajax_nopriv, das habe ich in der Vergangenheit schon mehrmals gemacht.
quelle
Für mich war es die Tatsache, dass ich in meiner PHP-Funktion
return
anstattecho
verwendete. Ändern Sie es, um es zuecho
beheben.quelle