Dalam proyek, kita sering menjumpai segmentasi halaman, antarmuka utama paling umum dari suatu sistem atau situs web. Halaman utama dibagi menjadi pengenalan sistem di bagian atas, pengenalan penulis di bagian bawah, menu fungsi sistem di sebelah kiri, dan antarmuka tempat menu sebenarnya ditampilkan di sebelah kanan.
Saat menghadapi halaman terpisah seperti ini, hal pertama yang dipikirkan semua orang adalah frameset. Menggunakan frameset untuk membagi beberapa frame adalah metode yang sederhana. Jika Anda tidak suka menggunakan frameset, orang yang menyukai desain front-end dapat memilih p splicing dan floating, yang akan menguji kemampuan gaya CSS Anda.
Kali ini kami terutama menjelaskan masalah penyegaran sebagian. Persyaratannya adalah: bingkai kiri, bingkai kanan.
Kalian pasti bertanya-tanya, tidak ada masalah dengan refreshing seperti ini. Memang. Sekarang gunakan frameset untuk membagi dua frame dan memperbarui masing-masing frame. Cukup perbarui dan kirimkan menu yang ditampilkan di bingkai sebelah kanan. Ini tidak berpengaruh pada bingkai kiri.
Untuk memudahkan pemahaman, Frame kiri disebut sebagai LeftFrame, dan Frame kanan disebut sebagai RightFrame; jika saya mengirimkan halaman RightFrame, saya perlu memperbarui halaman LeftFrame [Dinamis]. Apa yang harus dilakukan?
Faktanya, ini berarti membaca ulang data dari database;
Diantaranya, memodifikasiMenu!showTreeMenu dialihkan ke halaman tree.jsp
Dalam proyek saat ini, struts2 digunakan di meja depan ketika data di halaman kanan dikirimkan, idenya adalah: lalu lompat ke antarmuka utama lagi, yang setara dengan membaca ulang data, tetapi antarmuka utama dimuat. sebenarnya ditampilkan di area kanan, sehingga menjadi dua LeftFrame. Bahkan mengubah pengalihan resultType di Struts2 tidak berhasil.
Akhirnya, JS sederhana memecahkan masalah tersebut.
Setelah mengirimkan RightFrame di halaman kanan, gunakan JS untuk memperbarui LeftFrame di sebelah kiri. sebagai berikut:
Acara onload tubuh di rightFrame:
window.parent.frames[ "leftTree"].lokasi.reload()
Ketika Anda berada di akhir alur pemikiran tertentu, Anda dapat mencoba mengubah alur pemikiran Anda, dan Anda akan melihat masa depan yang cerah.
Persyaratannya adalah sebagai berikut: Jika Anda me-refresh halaman RightFrame kanan, hanya me-refresh sebagian dari LeftFrame kiri [refresh p tertentu].
Ketika berbicara tentang penyegaran sebagian, penyegaran sebagian Ajax harus terlintas dalam pikiran.
Kemudian kami menggunakan implementasi dasar js Ajax murni:
fungsi init(){
//Lakukan penyegaran sebagian
var xmlHttpReq=buatXmlHttpRequest();
//Dapatkan url awal, seperti tindakan struts2 atau halaman servlet atau jsp
var url="sukses.jsp";
xmlHttpReq.open("DAPATKAN",url,benar);
//Karena Anda melakukan panggilan asinkron,
//Jadi, Anda perlu mendaftarkan event handler panggilan balik yang akan dipanggil oleh objek XMLHttpRequest
xmlHttpReq.onreadystatechange=fungsi(){
if(xmlHttpReq.readyState==4){
if(xmlHttpReq.status==200){
//Gunakan induk untuk mendapatkan p di halaman kiri, lalu ubah tampilan tampilan
window.parent.frames["leftTree"].document.getElementById(pId).innerHTML="Test";
}kalau tidak{
peringatan(xmlHttpReq.status+xmlHttpReq.responseText);
}
}
};
xmlHttpReq.kirim(null);
}
window.parent.frames["leftTree"].document.getElementById(pId).innerHTML=xmlHttpReq.responseText
Cara penulisan pada background action adalah sebagai berikut:
Dua metode penyegaran, satu penyegaran keseluruhan;