J'essaie de créer un ajaxform sur la face avant. J'utilise le code
jQuery.ajax(
{
type: "post",
dataType: "json",
url: ajaxurl,
data: formData,
success: function(msg){
console.log(msg);
}
});
pour lequel je reçois une erreur
Uncaught ReferenceError: ajaxurl is not definedworklorAjaxBookForm @
?page_id=2:291onclick @ ?page_id=2:202
Tout en utilisant un code similaire sur le backend d'administration fonctionne. Quelle URL dois-je utiliser pour traiter la demande ajax?
plugin-development
theme-development
ajax
jquery
wp-enqueue-script
dread_cat_pirate
la source
la source
Réponses:
Dans le backend, il y a une
ajaxurl
variable globale définie par WordPress lui-même.Cette variable n'est pas créée par WP en frontend. Cela signifie que si vous souhaitez utiliser les appels AJAX en frontend, vous devez définir cette variable par vous-même.
Le bon moyen est de l'utiliser
wp_localize_script
.Supposons que vos appels AJAX soient dans un
my-ajax-script.js
fichier, puis ajoutez wp_localize_script pour ce fichier JS comme ceci:Après avoir localisé votre fichier JS, vous pouvez utiliser un
my_ajax_object
objet dans votre fichier JS:la source
wp_localize_script
sans avoir à utiliserwp_enqueue_scritp
?pour utiliser ajaxurl directement, dans votre fichier plugin ajoutez ceci:
vous pouvez ensuite utiliser la
ajaxurl
demande for ajax.la source
ajaxurl
similaire à l'utilisation par défaut. Ce qui est bien mieux que la réponse acceptée.ajaxurl
est toujours disponible dans un*.js
fichier. Pour ce faire, vous devrez peut-être déclarer laajaxurl
variable au début du chargement de la page. Une autre chose à considérer est l'appel*.js
de votre fichier externe . Le fichier externe doit être appelé APRÈS l'ajaxurl
a été instancié et être donné le droit valeur d'URL.