Pengantar Ajax Bagaimana saya bisa mendapatkan jQuery untuk membuat permintaan Ajax yang sinkron dan tidak asinkron? jquery sinkron ajax
Membuat permintaan ke server tanpa memuat ulang halaman. Ini adalah metode tingkat rendah dengan banyak penyesuaian. Itu mendasari semua metode ajax lainnya. Memiliki dua kasus penggunaan:
url- permintaan alamat.
pengaturan— dalam parameter ini, Anda dapat menyetel setelan untuk permintaan ini. Ditentukan menggunakan objek dalam format (name:value, name:value...) . Tidak ada pengaturan yang diperlukan. Anda dapat mengatur pengaturan default menggunakan metode $.ajaxSetup().
Daftar pengaturan
↓ nama :ketik (nilai bawaan)
Saat permintaan dibuat, header menunjukkan jenis konten yang diizinkan yang diharapkan dari server. Nilai tipe ini akan diambil dari parameter accepts.
Secara default, semua permintaan tanpa memuat ulang halaman terjadi secara asinkron (yaitu, setelah mengirim permintaan ke server, halaman tidak berhenti bekerja menunggu tanggapan). Jika Anda memerlukan eksekusi kueri sinkron, setel parameter ke false . Permintaan lintas domain dan permintaan jenis "jsonp" tidak dapat dijalankan dalam mode sinkron.
Ketahuilah bahwa mengeksekusi permintaan dalam mode sinkron dapat mengakibatkan penguncian halaman hingga permintaan selesai sepenuhnya.
Bidang ini berisi fungsi yang akan dipanggil sesaat sebelum permintaan ajax dikirim ke server. Fungsi seperti itu dapat berguna untuk memodifikasi objek jqXHR (di versi perpustakaan sebelumnya (sebelum 1.5), XMLHttpRequest digunakan sebagai pengganti jqXHR). Misalnya, Anda dapat mengubah / menentukan tajuk (header) yang diinginkan, dll. Objek jqXHR akan diteruskan ke fungsi sebagai argumen pertama. Argumen kedua adalah pengaturan permintaan.
Anda dapat menentukan header permintaan tambahan (header) di kolom ini. Perubahan ini akan diimplementasikan sebelum panggilan ke beforeSend, saat pengeditan akhir tajuk dapat dilakukan.
Saat pengaturan ini disetel ke true , permintaan akan dijalankan dengan status "berhasil" hanya jika respons dari server berbeda dengan respons sebelumnya. jQuery memeriksa fakta ini dengan melihat header Last-Modified. Sejak jQuery-1.4, selain Last-Modified, "etag" juga dicentang (keduanya disediakan oleh server dan diperlukan untuk memberi tahu browser bahwa data yang diminta dari server tidak berubah sejak permintaan sebelumnya).
Mengizinkan status sumber halaman disetel ke lokal (seolah-olah melalui protokol file), meskipun jQuery mengenalinya secara berbeda. Perpustakaan memutuskan bahwa halaman berjalan secara lokal jika ada protokol berikut: file, *-extension, dan widget.
Disarankan untuk mengatur nilai parameter isLocal global - menggunakan fungsi $.ajaxSetup() , dan bukan dalam pengaturan permintaan ajax individual.
Menentukan nama parameter yang ditambahkan ke url selama permintaan jsonp (secara default, "callback" digunakan - "http://siteName.ru?callback=...").
Dimulai dengan jQuery-1.5, menyetel parameter ini ke false akan mencegah parameter ekstra ditambahkan ke url. Dalam hal ini, Anda harus menetapkan nilai properti jsonpCallback secara eksplisit. Misalnya: (jsonp:false, jsonpCallback:"callbackName") .
Menentukan nama fungsi yang akan dipanggil saat server merespons permintaan jsonp. Secara default, jQuery menghasilkan nama arbitrer untuk fungsi ini, yang merupakan opsi pilihan untuk menyederhanakan pekerjaan perpustakaan. Salah satu alasan untuk menentukan fungsi penanganan permintaan jsonp Anda sendiri adalah untuk meningkatkan caching permintaan GET.
Dimulai dengan jQuery-1.5, Anda dapat menentukan fungsi dalam parameter ini untuk memproses sendiri respons server. Dalam hal ini, fungsi yang ditentukan harus mengembalikan data yang diterima dari server (dalam fungsi yang ditentukan, data tersebut akan tersedia di parameter pertama).
Secara default, semua data yang dikirimkan ke server pertama-tama diubah menjadi string (format url: fName1=nilai1&fName2=nilai2&...) yang sesuai dengan "application/x-www-form-urlencoded". Jika Anda perlu mengirim data yang tidak dapat diproses dengan cara ini (misalnya, dokumen DOM), Anda harus menonaktifkan opsi processData.
Parameter ini digunakan untuk permintaan ajax lintas-domain dari tipe GET, tipe data dapat berupa "jsonp" atau "skrip". Menentukan pengkodean di mana permintaan lintas domain akan dieksekusi. Ini diperlukan jika server di domain asing menggunakan pengkodean yang berbeda dari pengkodean di server domain asli.
(Pengaturan ini diperkenalkan di jQuery-1.5) satu set pasangan di mana kode eksekusi permintaan dipetakan ke fungsi yang akan dipanggil dalam kasus ini. Misalnya, untuk kode 404 (halaman tidak ada), Anda dapat menampilkan pesan di layar:
$.ajax (( statusCode: ( 404 : function() ( alert ( "Halaman tidak ditemukan") ; } } } ) ;
Fungsi yang merespons kode sukses akan menerima argumen yang sama dengan fungsi penangan sukses (ditentukan dalam parameter sukses), dan fungsi yang merespons kode kesalahan akan sama dengan fungsi error.
Fungsi yang akan dipanggil jika permintaan ke server berhasil diselesaikan. Tiga parameter akan diteruskan ke sana: data dikirim oleh server dan sudah diproses sebelumnya (yang berbeda untuk tipe data yang berbeda). Parameter kedua adalah string dengan status eksekusi. Parameter ketiga berisi objek jqXHR (di versi pustaka sebelumnya (sebelum 1.5), XMLHttpRequest digunakan sebagai pengganti jqXHR). Dimulai dengan jQuery-1.5, alih-alih satu fungsi, parameter ini dapat menerima berbagai fungsi.
Saatnya menunggu respons dari server. Ditentukan dalam milidetik. Jika waktu ini terlampaui, permintaan akan diakhiri dengan kesalahan dan kejadian kesalahan (lihat deskripsi di atas) akan dipicu, yang akan memiliki status "batas waktu".
Waktu dihitung sejak fungsi $.ajax dipanggil. Mungkin saja beberapa permintaan lain akan diaktifkan pada titik ini dan browser akan menunda eksekusi permintaan saat ini. Pada kasus ini waktu habis dapat selesai meskipun permintaan sebenarnya belum dimulai.
Di jQuery-1.4 dan sebelumnya, ketika batas waktu habis, objek XMLHttpRequest akan masuk ke status kesalahan dan mengakses bidangnya mungkin mengeluarkan pengecualian. DI DALAM Firefox 3.0+ skrip dan permintaan jenis JSONP tidak akan dibatalkan saat waktu habis. Mereka akan selesai bahkan setelah waktu ini berakhir.
Fungsi yang akan menyediakan objek XMLHttpRequest. Secara default, untuk browser IE objek ini adalah ActiveXObject, jika tidak, ini adalah XMLHttpRequest. Dengan opsi ini, Anda dapat menyuntikkan versi Anda sendiri dari objek ini.
(Pengaturan ini diperkenalkan di jQuery-1.5.1) Satu set pasangan (nama:nilai) untuk mengubah/menambahkan nilai bidang yang sesuai dari objek XMLHttpRequest. Misalnya, Anda dapat menyetel properti withCredentials ke true saat membuat permintaan lintas domain:
$.ajax (( url: a_cross_domain_url, xhrFields: ( withCredentials: true ) ) );
DI DALAM jQuery-1.5 properti withCredentials tidak didukung oleh XMLHttpRequest asli dan akan diabaikan dalam permintaan lintas domain. Di semua versi perpustakaan berikutnya, ini telah diperbaiki.
Penangan acara
Pengaturan beforeSend, error, dataFilter, success, dan complete (dijelaskan di bagian sebelumnya) memungkinkan Anda untuk mengatur event handler yang terjadi pada saat-saat tertentu dalam pelaksanaan setiap permintaan ajax.
sebelumKirim terjadi tepat sebelum permintaan dikirim ke server. kesalahan terjadi ketika permintaan gagal. filter data terjadi ketika data tiba dari server. Memungkinkan Anda memproses data "mentah" yang dikirim oleh server. kesuksesan terjadi ketika permintaan selesai dengan sukses. menyelesaikan terjadi dalam hal penyelesaian permintaan.Contoh penggunaan sederhana. Kami akan menampilkan pesan saat permintaan berhasil diselesaikan:
$.ajax (( url: "ajax/test.html", sukses: function () ( alert ("Pemuatan telah dilakukan." ); ) ) );
Dimulai dengan jQuery-1.5, metode $.ajax() mengembalikan objek jqXHR yang, antara lain, mengimplementasikan antarmuka yang ditangguhkan, memungkinkan Anda menentukan penangan eksekusi tambahan. Selain metode .done(), .fail(), dan .then() standar untuk objek yang ditangguhkan, yang dapat digunakan untuk menyetel penangan, jqXHR mengimplementasikan .success(), .error(), dan .complete( ) . Ini dilakukan untuk mencocokkan nama biasa dari metode yang digunakan untuk mengatur penangan untuk mengeksekusi permintaan ajax. Namun, dimulai dengan jQuery-1.8, ketiga metode ini akan menjadi tidak diinginkan untuk digunakan.
Beberapa jenis permintaan, seperti jsonp atau permintaan GET lintas domain, tidak dimaksudkan untuk menggunakan objek XMLHttpRequest. Dalam hal ini, XMLHttpRequest dan textStatus yang diteruskan ke handler akan berisi nilai undefined .
Di dalam handler, variabel this akan berisi nilai dari parameter konteks. Jika tidak disetel, ini akan berisi objek pengaturan.
parameter tipedata
Fungsi $.ajax() mempelajari tentang jenis data yang dikirim oleh server dari server itu sendiri (menggunakan MIME). Selain itu, dimungkinkan untuk menunjukkan (klarifikasi) secara pribadi bagaimana menafsirkan data ini. Hal ini dilakukan dengan menggunakan parameter dataType. Nilai yang mungkin untuk parameter ini:
"xml" — dokumen xml yang diterima akan tersedia dalam bentuk teks. Anda dapat mengerjakannya dengan alat jQuery standar (serta dengan dokumen html). "html" - html yang dihasilkan akan tersedia dalam bentuk teks. Jika itu berisi skrip dalam tagNamamu: | ||
Nomor gulungan: | ||