Update: Ich habe es geschafft, AJAX zum Laufen zu bringen, aber nicht im Click-Ereignis. Ich habe die Frage entsprechend aktualisiert.
Ich versuche einen Code, den ich auf der Seite gefunden habe: 'AJAX in Plugins' .
Ich kann es jedoch nicht zum Laufen bringen und weiß nicht wirklich, wo ich anfangen soll zu suchen. Es funktioniert, wenn ich die Klickfunktion entferne und den Code einfach beim Seitenladen ausführe.
Ich habe eine Javascript-Datei, die so aussieht:
jQuery(document).ready(function(){
jQuery("#createremotesafe").click(function(){
alert ('test');
var data = {
action: 'my_action',
whatever: 1234
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
jQuery.post(ajaxurl, data, function(response) {
alert('Got this from the server: ' + response);
});
});
});
und irgendwo in meinem PHP-Skript, das die Schaltfläche generiert, die das Javascript ausführen soll (dh die Administrationsseite), und auch den Rest der Seite:
add_action('wp_ajax_my_action', 'my_action_callback');
echo 'test2';
function my_action_callback() {
global $wpdb; // this is how you get access to the database
$whatever = $_POST['whatever'];
$whatever += 10;
echo $whatever;
die(); // this is required to return a proper result
}
Ich bekomme sowohl die Alert ('test')
als auch die echo 'test2'
, aber nicht die Antwortwarnung. Es gibt keine Javascript-Fehler oder ähnliches. Mein Code läuft definitiv, da ich beide Tests sehen kann, aber warum erhält AJAX keine Antwort? Verschwindet meine PHP-Funktion nach dem Laden der Seite? Vielleicht kann / sollte ich die eingebauten wp AJAX-Funktionen nicht verwenden?
Es wird auch kein leeres Warnfeld angezeigt, es passiert nur nichts.
ajaxurl
definiert und richtig? 2) Wo sehen Sie dasecho 'test2'
?