Estoy tratando de crear una ajaxform en la parte frontal. Estoy usando el codigo
jQuery.ajax(
{
type: "post",
dataType: "json",
url: ajaxurl,
data: formData,
success: function(msg){
console.log(msg);
}
});
para lo cual recibo un error
Uncaught ReferenceError: ajaxurl is not definedworklorAjaxBookForm @
?page_id=2:291onclick @ ?page_id=2:202
Mientras usa un código similar en el backend de administrador funciona ¿Qué url debo usar para procesar la solicitud ajax?
plugin-development
theme-development
ajax
jquery
wp-enqueue-script
dread_cat_pirate
fuente
fuente
Respuestas:
En el backend hay una
ajaxurl
variable global definida por el propio WordPress.WP no crea esta variable en la interfaz. Significa que si desea utilizar llamadas AJAX en la interfaz de usuario, debe definir dicha variable usted mismo.
Una buena forma de hacerlo es usarlo
wp_localize_script
.Supongamos que sus llamadas AJAX están en el
my-ajax-script.js
archivo, luego agregue wp_localize_script para este archivo JS de esta manera:Después de localizar su archivo JS, puede usar el
my_ajax_object
objeto en su archivo JS:fuente
wp_localize_script
sin tener que usarwp_enqueue_scritp
?para usar ajaxurl directamente, en su archivo de complemento agregue esto:
A continuación, puede utilizar la
ajaxurl
solicitud de ajax.fuente
ajaxurl
similar al uso predeterminado. Lo cual es mucho mejor que la respuesta aceptada.ajaxurl
todavía está disponible en un*.js
archivo. Para hacerlo, es posible que deba declarar laajaxurl
variable al principio de la carga de la página. Otra cosa a considerar es la llamada del*.js
archivo externo tuyo. El archivo externo debe ser llamado después laajaxurl
ha creado una instancia y se le dará el valor URL derecha.