Ich versuche, eine Ajaxform auf der Vorderseite zu erstellen. Ich benutze den Code
jQuery.ajax(
{
type: "post",
dataType: "json",
url: ajaxurl,
data: formData,
success: function(msg){
console.log(msg);
}
});
wofür bekomme ich fehler
Uncaught ReferenceError: ajaxurl is not definedworklorAjaxBookForm @
?page_id=2:291onclick @ ?page_id=2:202
Bei Verwendung von ähnlichem Code auf dem Admin-Backend funktioniert. Welche URL muss ich verwenden, um die Ajax-Anfrage zu verarbeiten?
plugin-development
theme-development
ajax
jquery
wp-enqueue-script
dread_cat_pirate
quelle
quelle
Antworten:
Im Backend gibt es eine globale
ajaxurl
Variable, die von WordPress selbst definiert wird.Diese Variable wird nicht von WP im Frontend erstellt. Dies bedeutet, dass Sie, wenn Sie AJAX-Aufrufe im Frontend verwenden möchten, diese Variablen selbst definieren müssen.
Guter Weg, dies zu tun, ist zu verwenden
wp_localize_script
.Nehmen wir an, Ihre AJAX-Aufrufe befinden sich in
my-ajax-script.js
file. Fügen Sie dann wp_localize_script für diese JS-Datei wie folgt hinzu:Nachdem Sie Ihre JS-Datei lokalisiert haben, können Sie das
my_ajax_object
Objekt in Ihrer JS-Datei verwenden:quelle
wp_localize_script
ohne verwenden zu müssenwp_enqueue_scritp
?Um Ajaxurl direkt zu verwenden, fügen Sie in Ihrer Plugin-Datei Folgendes hinzu:
Sie können dann die
ajaxurl
für Ajax-Anforderung verwenden.quelle
ajaxurl
etwa der Standardverwendung. Welches ist viel besser als die akzeptierte Antwort.ajaxurl
ist noch in einer*.js
Datei verfügbar . Dazu müssen Sie möglicherweise dieajaxurl
Variable zu einem frühen Zeitpunkt beim Laden der Seite deklarieren . Eine weitere zu berücksichtigende Sache ist das Aufrufen der externen*.js
Datei von Ihnen. Die externe Datei soll aufgerufen werden , NACHDEM dieajaxurl
instanziiert wurde und den richtigen URL - Wert angegeben werden.