Saya mencoba membuat ajaxform di sisi depan. Saya menggunakan kodenya
jQuery.ajax(
{
type: "post",
dataType: "json",
url: ajaxurl,
data: formData,
success: function(msg){
console.log(msg);
}
});
di mana saya mendapatkan kesalahan
Uncaught ReferenceError: ajaxurl is not definedworklorAjaxBookForm @
?page_id=2:291onclick @ ?page_id=2:202
Saat menggunakan kode serupa pada karya backend admin. URL apa yang harus saya gunakan untuk memproses permintaan ajax?
plugin-development
theme-development
ajax
jquery
wp-enqueue-script
dread_cat_pirate
sumber
sumber
Jawaban:
Di backend ada
ajaxurl
variabel global yang ditentukan oleh WordPress itu sendiri.Variabel ini tidak dibuat oleh WP di frontend. Ini berarti bahwa jika Anda ingin menggunakan panggilan AJAX di frontend, maka Anda harus mendefinisikan variabel tersebut sendiri.
Cara yang baik untuk melakukannya adalah menggunakan
wp_localize_script
.Anggap saja panggilan AJAX Anda ada dalam
my-ajax-script.js
file, lalu tambahkan wp_localize_script untuk file JS ini seperti ini:Setelah melokalkan file JS Anda, Anda dapat menggunakan
my_ajax_object
objek di file JS Anda:sumber
wp_localize_script
tanpa harus menggunakanwp_enqueue_scritp
?untuk menggunakan ajaxurl secara langsung, di file plugin Anda tambahkan ini:
Anda kemudian dapat menggunakan
ajaxurl
untuk permintaan ajax.sumber
ajaxurl
sama dengan penggunaan standar. Yang jauh lebih baik daripada jawaban yang diterima.ajaxurl
masih tersedia dalam*.js
file. Untuk melakukannya, Anda mungkin perlu mendeklarasikanajaxurl
variabel sejak awal pemuatan halaman. Hal lain yang perlu dipertimbangkan adalah pemanggilan*.js
file eksternal Anda. File eksternal harus disebut SETELAH yangajaxurl
telah dipakai dan diberi nilai URL yang tepat.