Ich habe ein Problem, an dem ich seit Tagen festhalte ... Ich versuche, eine einfache ajaxPOST-Funktion zu verwenden, um Daten an eine MySQL-Datenbank (nicht WP-Datenbank) zu senden.
Dieser Code befindet sich in "single-post.php" im Theme, da er vor jedem Post überprüft werden muss.
%Vor%Ich sende einfach eine Variable an ein Skript "admin_checkuser.php", das wiederum ein anderes Skript aufruft, das Aktionen für die Datenbank ausführt.
Dies ist der Code für "admin_checkuser":
%Vor%Aber ich glaube nicht, dass die Anrufe zum Skript gehen. Diese Skripte wurden außerhalb von WordPress getestet und funktionierten, also muss es in WordPress etwas sein, das den Ajax-Aufruf blockiert. BTW, ich habe versucht, die "admin_checkuser.php" in vielen verschiedenen Ordnern, aber nichts funktioniert.
Vielen Dank im Voraus.
Sie sollten Ihre URL für Ihren Ajax-Anruf überprüfen.
Vielleicht die volle URL anstelle der relativen verwenden.
Es könnte sein, dass aufgrund der Position Ihres Themas die URL nicht korrekt ist. Ich nehme an, dass Ihr Ajax-Code in Ihrem Themenordner ist.
Es gibt einige Wordpress-Funktionen, die das Themenverzeichnis bekommen.
Wenn Sie zum Beispiel auf dieser Seite http://yourwebpage/test/
haben, wird der Ajax-Aufruf hier gehen http://yourwebpage/test/library/functions/admin_checkuser.php
. Dies nehme ich an, wäre der falsche Ort.
Deshalb müssen Sie Ihrem Skript die absolute URL hinzufügen. Und wenn es in Ihrem Thema ist, können Sie diese Methode get_template_directory_uri()
verwenden, um das Vorlagenverzeichnis zu erhalten.
Siehe hier: Ссылка
Sie sind viel besser dran mit der integrierten Wordpress AJAX-Anfrage.
Fügen Sie in Ihrer theme functions.php
-Datei Ihre aufzurufende Funktion hinzu, zum Beispiel:
Danach fügen Sie Ihren Hook mit Verbindungen zum eingebauten AJAX System hinzu
%Vor% wp_ajax_nopriv_%s
erlaubt den Aufruf vom Frontend.
Und dann, in Ihrer Javascript-Datei, feuern Sie einfach Ihre Ajax-Anfrage ab.
%Vor% Wenn ajaxurl
nicht definiert ist, müssen Sie es in Ihrer Vorlagendatei erstellen. So etwas sollte funktionieren, aber es gibt andere Möglichkeiten.
Backend von Wordpress erledigt den Rest.
Er nimmt die in der AJAX-Anforderung übergebene Aktion, sucht nach dem entsprechenden 'wp_ajax(_nopriv)_%s
-Hook und ruft dann die Funktion auf, die dem Hook zugewiesen ist.
Es wird auch entweder $_POST
oder $_GET
abhängig vom Typ der AJAX-Anfrage übergeben.
Sie können ein wenig mehr über die Verwendung von AJAX in Wordpress lesen.