Direkomendasikan: Cara memformat pagination ASP dan tanggal untuk format RFC822 Hitung halaman, hehe, Anda tidak perlu menilai konten yang direferensikan berikut: intnumpage = abs (int (-(intnumrecord/intperpage))) format tanggal tersebut
Jika ruang komputer akan ditutup, atau jika Anda terburu -buru untuk berkencan dengan satu mm, silakan lompat langsung ke paragraf keempat.
Script yang dijelaskan di bawah ini mencakup skrip sisi server dan skrip sisi klien. Script sisi server merujuk ke bagian skrip yang berjalan di server. Misalnya, Response Common.Write jelas dijalankan di server. Skrip sisi server dapat ditulis dalam bahasa VBScript dan JScript. Dalam artikel ini, VBScript digunakan, JScript adalah prinsip yang sama.
Skrip klien juga dapat dipertimbangkan untuk memasukkan dua bahasa: VBScript dan JavaScript, yang merupakan bahasa skrip yang berjalan di browser klien. Misalnya, ketika kami mengunjungi halaman web, kotak pesan muncul, yang dilakukan menggunakan skrip klien (peringatan, msgbox, dll), dan jelas bukan sesuatu yang dapat dilakukan skrip sisi server. Ada perbedaan besar antara skrip klien dan skrip server (di browser seperti IE dan Firefox), yaitu, skrip klien dapat mengakses Model Objek Dokumen (DOM) dan mengoperasikan objek di halaman (seperti memodifikasi judul halaman, memodifikasi atribut div div, dll.).
Pertama, mari kita pahami proses eksekusi halaman ASP
1.iis menemukan file ASP dan mengirimkannya ke mesin ASP (biasanya ASP.DLL) untuk diproses.
2. Mesin membuka file ASP ini dan menemukan konten antara < % dan %>, dan tentu saja konten antara <skrip runat = server> dan </script> yang sesuai. Isi ini disebut blok skrip. Hanya konten dalam blok skrip yang diuraikan oleh mesin, dan konten lainnya diabaikan, dan dimasukkan di antara blok skrip sebagai karakter yang tidak berarti. Penting untuk mengklarifikasi bahwa pada kenyataannya, ada lebih dari konten ini yang diuraikan. Sisi server disertakan file <!-#termasuk ***-> kelas juga disertakan dan diproses oleh mesin. Jika Anda membaca lebih banyak program, Anda juga akan tahu bahwa beberapa objek <PPERBICARA> yang ditandai sebagai server dengan atribut runat juga akan diproses, jadi saya tidak akan membahasnya secara mendalam di sini.
3. Mesin menjalankan skrip di blok skrip. Skrip sisi server ini dieksekusi secara keseluruhan, yaitu kode berikut dapat ditulis:
| Berikut ini adalah konten yang dikutip: <% Redup i Untuk i = 1 hingga 5 %> Halo dunia! < % Next %> |
Mesin tidak mengurai blok skrip ini secara terpisah, menyebabkan kesalahan sintaks terjadi di kedua blok skrip. Jadi kami sampai pada kesimpulan berikut: Tidak semua kode skrip non-server akan dikirim ke klien, dan ada kemungkinan bahwa kode skrip non-server ini dibatasi oleh blok skrip. Server pasti tidak akan khawatir tentang pelaksanaan skrip klien, tetapi skrip klien yang berbeda dapat dikeluarkan melalui skrip server.
4. Pada akhirnya, mesin menghasilkan aliran teks, atau hasil eksekusi dari skrip, yang dapat dianggap sebagai string, yang merupakan kode yang dikirim ke halaman web browser klien. Browser klien menampilkan halaman. Pada saat ini, kode sumber (file sumber) halaman tidak berisi skrip sisi server, tetapi berisi hasil eksekusi dari skrip sisi server (ini jelas).
< % ... %> dan <skrip runat = server> ... </script>
Mereka semua adalah skrip sisi server yang diproses dan dieksekusi secara bersamaan. Mereka dieksekusi secara keseluruhan.
< % ... %> dan <bahasa skrip = ...> ... </script>
Yang pertama adalah skrip sisi server, dan yang terakhir adalah skrip sisi klien. Yang pertama dieksekusi terlebih dahulu, dan yang terakhir dieksekusi kemudian.
Bahkan, itu tidak sepenuhnya benar. Skrip keduanya dapat dieksekusi pada saat yang sama, tetapi ruang berbeda, dan masih: yang pertama dieksekusi di server, dan yang terakhir dieksekusi di browser klien. Yang pertama harus dieksekusi secara logis sebelumnya oleh yang terakhir. Pada saat yang sama, kami juga menyimpulkan bahwa selama pelaksanaan halaman yang sama, skrip klien tidak dapat diumpankan kembali ke skrip server dengan cara apa pun. Artinya, klien menelusuri buku pesan Anda dan mengirimkan pesan baru, atau nilai yang diperoleh oleh skrip klien apa pun tidak dapat diproses dalam respons server yang sama.
Tentang panggilan komponen
Perhatikan bahwa skrip sisi server dan skrip sisi klien keduanya skrip, sehingga Anda secara alami dapat membuat komponen XMLHTTP, komponen ADODB.Connection, dll., Tetapi tidak di mana pun.
Jika XMLHTTP digunakan untuk merangkak halaman web (seperti koleksi) di server, itu harus dibuat dalam skrip server. Jika digunakan untuk AJAX untuk klien dan backend mengakses halaman di server tanpa penyegaran, itu dijalankan pada klien dan secara alami dibuat pada klien.
Komponen ADODB.Connection digunakan untuk mengakses database. Secara umum, dibuat di sisi server. Bagaimanapun, program ASP sisi server menjalankan data database. Namun, jika database Anda benar-benar terhubung ke klien (seperti http://bbs.bccn.net/thread-224966-1-2.html), maka tidak diragukan lagi dibuat dalam skrip klien.
Singkatnya, hal -hal yang kontradiktif dan aspek masing -masing memiliki karakteristik mereka sendiri. Hal yang berbeda memiliki kontradiksi yang berbeda; Hal yang sama memiliki kontradiksi yang berbeda dalam proses dan tahap perkembangan yang berbeda; Kontradiksi yang berbeda dalam hal yang sama dan dua aspek berbeda dari kontradiksi yang sama memiliki karakteristik mereka sendiri (jika Anda tidak dapat memahaminya, Anda dapat mengabaikannya ...). Prinsip ini mengharuskan kita untuk mematuhi prinsip analisis spesifik masalah spesifik, dan di bawah bimbingan prinsip universalitas kontradiksi, kita harus secara khusus menganalisis kekhasan kontradiksi, dan menemukan cara yang benar untuk menyelesaikannya. Menentang adopsi berukuran sama dari satu metode untuk menyelesaikan kontradiksi antara hal-hal yang berbeda. Inilah yang Anda katakan ketika Anda membuka kunci dan menyanyikan lagu saat Anda pergi ke gunung.
Skrip VBScript sisi server menggunakan metode server.CreateObject (className) untuk membuat objek, dan skrip VBScript sisi klien menggunakan metode CreateObject (ClassName) untuk membuat objek.
Kesalahan khas
| Berikut ini adalah konten yang dikutip: <% Fungsi tsize (b) 'Ini adalah fungsi khusus saya Tsize = cina fungsi akhir %> <a href = javascript: <%tsize ('variable')%>> klik di sini untuk menggunakan fungsi yang saya tentukan </a> (http://bbs.bccn.net/thread-225244-1-1.html) |
Analisis Kesalahan:
Membingungkan perbedaan antara skrip sisi server dan skrip sisi klien. Ketika benar-benar mengeksekusi, kami akan menemukan bahwa klien tidak menerima kode apa pun seperti tsize sama sekali, karena tsize adalah program sisi server. Setelah diproses oleh mesin (perhatikan bahwa pemrosesan fungsi mesin murni dipanggil oleh skrip sisi server dan tidak akan dikirim kembali ke klien) dan akan hilang dan tidak dapat bekerja pada klien. Ini berarti bahwa skrip klien tidak dapat secara langsung memanggil fungsi skrip sisi server.
Bahkan, program ini memiliki kesalahan sintaksis. Ketika mesin memproses konten ini, pertama -tama menemukan konten antara <%dan%>, yaitu, <%tsize ('variabel')%>. Jelas, konten ini tidak mematuhi aturan sintaks VBScript. Nah, mengubahnya menjadi <%= tsize (variabel)%> Tidak ada kesalahan sintaks dalam skrip sisi server. Pada saat ini, fungsi TSIZE dapat mengembalikan nilainya ke Cina secara normal, sehingga atribut HREF yang diterima oleh klien ditulis seperti ini: JavaScript: China, tidak dapat dieksekusi.
Dampak skrip sisi server pada skrip sisi klien
Seperti disebutkan sebelumnya, skrip sisi server dieksekusi secara logis sebelum skrip sisi klien, sehingga kode tersebut layak:
| Berikut ini adalah konten yang dikutip: <% Redup i Untuk i = 1 hingga 5 Response.write <script type = text/javascript> _ & Peringatan ('Halo Dunia! & I &') </script> Berikutnya %> Mengenai pelaksanaan respons.redirect dan javascript Perhatikan bahwa kode berikut ini ditulis secara tidak benar: <% Response.redirect index.asp Response.write <script type = text/javascript> _ & Peringatan ('Kesalahan Kata Sandi!') </script> %> |
Ini adalah kesalahan umum. Penulis sering berpikir bahwa menulis kode dengan cara ini dapat menyebabkan klien memunculkan prompt kesalahan kata sandi dan kemudian beralih ke index.asp. Bahkan, ini tidak bisa terjadi. Bahkan jika dua baris kode dipertukarkan secara berurutan, tidak mungkin untuk mencapai efek ini.
Alasannya terkait dengan cara server menangani dua baris kode. Dua baris kode ini tidak dapat bekerja pada saat yang sama.
Response.Write mengirimkan teks ke klien. Konten teks ini bisa berupa skrip. Browser klien dapat menjalankan skrip ini setelah menerimanya. Perhatikan bahwa itu hanya dapat dieksekusi setelah menerimanya.
Response.Redirect mengirimkan header HTTP ke klien (apa itu header http? Mari kita begini, misalnya, penulisan ke cookie klien adalah header http, dan informasi header http yang diizinkan untuk ditutup ke browser klien sebelum subjek HTTP. Inilah mengapa kadang -kadang kami memodifikasi cookie setelah menutup browser, karena hal itu membuat subjek http. Informasi.), Konten informasi memberi tahu browser klien untuk melompat ke halaman untuk menelusuri. Perhatikan bahwa informasi pengalihan ini segera berfungsi, yaitu, informasi pengalihan ini eksklusif. Ketika buffer dihidupkan, tidak peduli berapa banyak konten yang telah ditulis ke dalam buffer menggunakan response.write, setelah respons. Redirect dipanggil, buffer akan dibersihkan dan instruksi header akan dikirim ke browser klien. Jika kami secara dinamis melacak pelaksanaan program, kami juga akan menemukan bahwa setelah memanggil respons. Redirect, program berhenti mengeksekusi, jadi harap dicatat bahwa program sisi server harus menutup koneksi data dan operasi lain sebelum memanggil respons. Redirect.
Jadi bagaimana contoh di atas dimodifikasi? Jika Anda tidak mau memodifikasi index.asp untuk menambahkan prompt skrip, Anda hanya dapat memasukkan perintah pengarah ke dalam skrip klien untuk dieksekusi, seperti ini:
| Berikut ini adalah konten yang dikutip: <% Response.write <script type = text/javascript> _ & peringatan ('!'); location.href = 'index.asp' </script> %> |
Bagikan: ASP 3.0 Pemrograman Lanjutan (33) 7.4.2 Penanganan kesalahan VBScript dalam VBScript, juru bahasa skrip tidak dapat menangani kesalahan apa pun yang ditemukannya, dan terus menjalankan pernyataan berikutnya menggunakan pernyataan resume ON Error Next. Setelah pernyataan ini telah diproses, mesin skrip akan terus menjalankan program selanjutnya.