Ich bin relativ neu in jQuery und insbesondere in AJAX. Ich habe ein kleines Problem, bei dem der Rückgabewert immer 0 ist, obwohl ich denke, dass dies tatsächlich die Erfolgsmeldung ist und nichts zurückgibt.
Ich habe den Google-Vers durchsucht und ich habe die die () -Funktion für den PHP-Callback und ich glaube, dass die add_actions korrekt sind.
Ich arbeite an einem lokalen Host, obwohl ich bezweifle, dass dies Auswirkungen hat und dies alles im Admin, nicht im Frontend. Ich habe auch überprüft, ob das js in die Warteschlange gestellt und lokalisiert ist.
Ich erhalte eine 200-OK-Nachricht im Chrome-Entwicklerbereich.
Ich habe auch das grundlegende AJAX von http://codex.wordpress.org/AJAX_in_Plugins ausprobiert und es hat auch 0 zurückgegeben, was mich fragt, ob es sich um etwas anderes als den unten beschriebenen Code handelt.
Im Moment versuche ich nur, etwas an die jQuery zurückzusenden. Jede Hilfe wäre dankbar.
Die jQuery
jQuery(document).ready(function(){
jQuery('.cl_link_buttons').val('id').click(function() {
var currentid = jQuery(this).attr('id');
//alert(currentid);
console.log(currentid);
jQuery.ajax ( data = {
action: 'cleanlinks_ajax_get_post_data',
url: ajaxurl,
type: 'POST',
dataType: 'text',
"currentid" : currentid
});
jQuery.post(ajaxurl, data, function(response) {
var dataz = response;
alert( dataz );
console.log (dataz); //show json in console
});
return false;
}); //end click event
}); //end doc ready
Das PHP
add_action("wp_ajax_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
add_action("wp_ajax_nopriv_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
function cleanlinks_ajax_get_post_data() {
$from_ajax = $_POST['currentid'];
echo "do" . $from_ajax . "something";
die();
}
jQuery('.cl_link_buttons').val('id').click(function()
sieht komisch aus.Antworten:
Eine
0
Antwort bedeutet, dass entweder die Aktion nicht gesetzt ist (in den Ajax-Daten) oder dass die Rückruffunktion der Aktion nicht gefunden werden kann.quelle
.always
, um es zu erfassen.Was Sie tun müssen, ist
die();
am Ende Ihrer Funktion hinzuzufügen .Den Grund und weitere Informationen finden Sie hier: http://codex.wordpress.org/AJAX_in_Plugins
Anmerkungen:
echo
etwas vor der Ausführungdie
. Dies verhindert Serverfehler und hilft beim Debuggen.quelle
die()
ohne etwas auszugeben, wird ein interner Serverfehler von 500 ausgegeben, und Sie erhalten eine Antwort0
fürwp-admin/admin-ajax.php
. Sie sollten immer etwas ausgeben, auch wenn Sie nur Werte festlegen und nichts zurückgegeben werden muss. Andernfalls, wenn Sie nichts Echo unddie()
, müssen Sie verwenden ,.always()
es zu erfassen, weil es nicht in sein wird.done()
, wird es in ,.fail()
weil es ohne etwas = 500 Fehler stirbt.die();
in der Ajax - Funktion in derfunctions.php
Datei , ohne dass dies zu irgendetwas vor Echo aus, und rufen Sie die Aktion über Ajax, zum Beispiel:var testing = $.ajax( ... ); testing.fail(function(response) { console.log('Failed ' + response); }); testing.done(function(response) { console.log('Success ' + response); }); testing.always(function(response) { console.log('Ajax Request complete: ' + response); });
Also habe ich es ausgearbeitet. Es war nicht die jQuery als solche, obwohl ich das verbessert habe, sondern die Platzierung der Rückruffunktion. Ich habe es in die Haupt-Plugin-Datei verschoben und es hat funktioniert.
quelle
Ich habe das gleiche Problem. Und es gelöst. Sie müssen die Variable "action" wie im Beispiel senden:
Weil in wp-admin / admin-ajax.php der Handler für die Aktionsvariable ist:
quelle
action
Parameter. Während dies für Sie gearbeitet haben mag, war es hier nicht das Problem.Versuchen Sie, diesen Code auf der Konsole auszuführen
Ich sehe viele Fehler in Ihrem JavaScript-Code und das könnte der Grund sein.
quelle
Ich hatte dieses Problem auch, und es war die Tatsache, dass ich in meiner PHP-Funktion
return
anstattecho
verwendete. Ändern Sie es, um es zuecho
beheben.quelle
Ich hatte das gleiche Problem, um es zu beheben, das ich
wp_die()
am Ende meiner Funktion gleich nach einemecho
. Vergessen Sie nicht, Ihre Aktion auf Ihrem Skript zu übergeben.Überprüfen Sie zur Sicherheit, ob Ihre Funktion
wp_ajax_nopriv
like verwenden musswp_ajax
.quelle
Nur als Referenz für alle, die hier googeln: "Ajax-Anforderung gibt 0 zurück": Denken Sie daran, wenn Sie der Methode des Objekts eine Ajax-Aktion hinzufügen, um sicherzugehen, dass der Modifikator für den Methodenzugriff lautet
public
.add_action
Schweigen Sie einfach, wenn Ihre Methode außerhalb von nicht aufgerufen werden kann$object
.quelle
Wenn Sie die Funktion wp_localize_script () nicht zum Festlegen der Ajax-URL verwenden, gibt admin ajax 0 zurück. Ich denke, es ist ein Wordpress-Fehler. Hier ist ein Beispiel:
Die Javascript-Datei (search.js):
quelle
// Code Funktion PHP
quelle
Diejenigen, die Fehler 0 :) erhalten, Aktion => 'Aktion'
quelle
Hoffe es ist hilfreich für dich, Best
quelle
Versuchen Sie, eine
if
Anweisung hinzuzufügen :quelle