Fungsi pemerhatian
Fungsi ajaxStart dan ajaxStop boleh digunakan sebagai fungsi pemerhatian, dan kita boleh menggunakan fungsi panggil balik fungsi pemerhatian untuk melaksanakan pemprosesan yang sepadan.
Fungsi panggil balik ajaxStart dicetuskan apabila permintaan Ajax bermula dan tiada penghantaran lain telah dibuat.
Apabila permintaan aktif terakhir ditamatkan, fungsi panggil balik yang didaftarkan melalui ajaxStop dilaksanakan.
Oleh kerana fungsi pemerhatian adalah global, ia perlu dipanggil menggunakan $(document). Kami menguji kedua-dua fungsi dengan menggunakan kaedah Ajax untuk mendapatkan contoh imej:
Halaman semasa ialah:
<div></div> <button>load</button>
Kandungan test.html dalam direktori yang sama ialah:
<img src="avatar.jpg" />
Ingin memuatkan imej selepas mengklik butang:
$('button').click(function() { $('div').load('test.html'); });
Pada ketika ini kita boleh menggunakan fungsi ajaxStart dan ajaxStop untuk menambah gesaan:
$(document).ajaxStart(function() {// alert('load a picture'); }).ajaxStop(function() { alert('show a picture'); }); $('button').click(function() { $('div').load('test.html'); });
Selepas mengklik butang pada masa ini, ia akan menggesa memuatkan gambar sebelum imej dimuatkan dan menunjukkan gambar selepas dimuatkan.
Ralat pengendalian
Kaedah yang paling biasa digunakan ialah kaedah ajaxError global Ambil contoh di atas sebagai contoh Jika kami menghantar permintaan data ke halaman yang tidak wujud:
$(document).ajaxError(function() {// alert('load failed!'); }); $('button').click(function() { $('div').load('noexsited.html'); });
Selepas mengklik butang pada masa ini:
Untuk kaedah bukan beban, anda juga boleh menggunakan kaedah gagal untuk pemprosesan gabungan:
$('button').click(function() { $.get('noexsited.html', function(data) { }).fail(function(jqXHR) { alert('status is ' + jqXHR.status); }); });
JSONP
JSONP ialah JSON dengan pelapik, JSON berlapik, yang menggunakan teg
Format JSONP adalah untuk membungkus fail JSON standard dalam sepasang kurungan, yang didahului oleh rentetan arbitrari. Rentetan ini, dipanggil P, ditentukan oleh pelanggan yang meminta data.
Butang yang sama seperti dalam contoh di atas, mula-mula kita tetapkan kandungan halaman domain luaran otherdomain.com/index.php kepada:
<?php $data = '{ "name": "stephenlee", "sex": "male" }'; echo $_GET['callback'] .'('. $data .')';
Kami menggunakan pemegang tempat khas untuk mencapai pemerolehan merentas domain data JSON:
$('button').click(function() { $.getJSON('otherdomain.com/index.php?callback=?', function(data) { console.log(data); }); });
Pemerolehan data berjaya.