Estou tentando criar um ajaxform na frente. Eu estou usando o código
jQuery.ajax(
{
type: "post",
dataType: "json",
url: ajaxurl,
data: formData,
success: function(msg){
console.log(msg);
}
});
pelo qual estou recebendo erro
Uncaught ReferenceError: ajaxurl is not definedworklorAjaxBookForm @
?page_id=2:291onclick @ ?page_id=2:202
Enquanto estiver usando código semelhante no back-end do administrador, funciona. Qual URL devo usar para processar a solicitação ajax?
plugin-development
theme-development
ajax
jquery
wp-enqueue-script
dread_cat_pirate
fonte
fonte
Respostas:
No back-end, há uma
ajaxurl
variável global definida pelo próprio WordPress.Essa variável não é criada pelo WP no frontend. Isso significa que, se você quiser usar chamadas AJAX no frontend, precisará definir essa variável sozinho.
Uma boa maneira de fazer isso é usar
wp_localize_script
.Vamos supor que suas chamadas AJAX estejam no
my-ajax-script.js
arquivo e adicione wp_localize_script para este arquivo JS da seguinte maneira:Depois de localizar seu arquivo JS, você pode usar o
my_ajax_object
objeto no seu arquivo JS:fonte
wp_localize_script
sem ter que usarwp_enqueue_scritp
?Para usar o ajaxurl diretamente, no seu arquivo de plugin, adicione:
você pode usar a
ajaxurl
solicitação para ajax.fonte
ajaxurl
da mesma forma o uso padrão. O que é muito melhor do que a resposta aceita.ajaxurl
ainda está disponível em um*.js
arquivo. Para fazer isso, pode ser necessário declarar aajaxurl
variável no início do carregamento da página. Outra coisa a considerar é a chamada do seu*.js
arquivo externo . O arquivo externo deve ser chamado APÓS aajaxurl
instanciação e receber o valor correto da URL.