Jika ruang komputer akan ditutup, atau Anda ingin berkencan dengan seorang gadis, silakan langsung ke paragraf alami keempat.
Skrip yang dijelaskan di bawah ini mencakup skrip sisi server dan skrip sisi klien. Skrip sisi server mengacu pada bagian skrip yang berjalan di server. Misalnya, Response.Write yang umum jelas dijalankan di sisi server skrip dapat ditulis menggunakan bahasa VBScript dan JScript, VBScript dan Jscript semuanya digunakan dalam artikel ini.
Skrip sisi klien juga dapat dianggap menyertakan dua bahasa: VBScript dan JavaScript, yang merupakan bahasa skrip yang dijalankan di browser klien. Misalnya, ketika kita mengunjungi halaman web dan kotak pesan muncul, ini dilakukan dengan menggunakan skrip sisi klien (peringatan, kotak pesan, dll.), dan ini jelas bukan sesuatu yang dapat dilakukan oleh skrip sisi server. Ada perbedaan besar lainnya antara skrip sisi klien dan skrip sisi server (di browser seperti IE dan Firefox), yaitu skrip sisi klien dapat mengakses Model Objek Dokumen (DOM) dan dapat memanipulasi objek di halaman (seperti seperti memodifikasi judul halaman, Memodifikasi atribut innerHTML div, dll.).
Pertama, mari kita lihat proses eksekusi halaman ASP.
1. IIS menemukan file ASP dan mengirimkannya ke mesin ASP (biasanya ASP.DLL) untuk diproses.
2. Mesin membuka file ASP dan menemukan konten antara <% dan %>, dan tentu saja konten antara <script runAt=server> dan </script> yang sesuai. Hanya konten dalam blok skrip yang diurai oleh mesin, dan konten lainnya diabaikan dan disisipkan di antara blok skrip sebagai karakter yang tidak berarti. Perlu dijelaskan bahwa sebenarnya, konten yang diurai lebih dari ini. File penyertaan sisi server dari kelas <!--#include ***--> juga disertakan dan diproses oleh mesin. Jika Anda banyak membaca program, Anda juga akan mengetahui bahwa beberapa objek <object> yang atribut runAtnya ditandai sebagai Server juga akan diproses di sini.
3. Mesin mengeksekusi skrip di blok skrip. Skrip sisi server ini dijalankan secara keseluruhan.
<%
Redupkan saya
Untuk i=1 sampai 5
%> Halo Dunia!
<% Berikutnya %>
Mesin tidak mengurai blok skrip ini secara terpisah, sehingga menyebabkan kesalahan sintaksis di kedua blok skrip. Jadi kita sampai pada kesimpulan berikut: tidak semua kode skrip non-server akan dikirim ke klien. Ada kemungkinan kode skrip non-server ini dibatasi oleh blok skrip. Server pasti tidak akan khawatir tentang eksekusi skrip klien, tetapi server dapat mengeluarkan skrip klien yang berbeda melalui skrip sisi server.
4. Terakhir, mesin menghasilkan aliran teks, atau hasil eksekusi skrip, yang dapat dianggap sebagai string, yaitu kode halaman web yang dikirim ke browser klien. Browser klien menampilkan halaman tersebut. Saat ini, kode sumber (file sumber) halaman tersebut tidak berisi skrip sisi server, tetapi berisi hasil eksekusi skrip sisi server (ini jelas).
<% … %> dan <skrip runat=server>…</skrip>
Semuanya adalah skrip sisi server yang diproses dan dijalankan pada waktu yang sama. Mereka tampil sebagai satu kesatuan.
<% … %> dan <skrip bahasa=…>…</skrip>
Yang pertama adalah skrip sisi server dan yang terakhir adalah skrip sisi klien. Yang pertama dieksekusi terlebih dahulu dan yang terakhir dieksekusi kemudian.
Faktanya, hal ini belum tentu terjadi. Ada kemungkinan kedua skrip dijalankan secara bersamaan, tetapi spasinya tetap berbeda: yang pertama dijalankan di server, dan yang terakhir dijalankan di server peramban klien. Yang pertama secara logis harus dieksekusi lebih awal dari yang kedua. Pada saat yang sama, kami juga sampai pada kesimpulan: Selama eksekusi halaman yang sama, skrip sisi klien tidak dapat memberi umpan balik ke skrip sisi server dalam hal apa pun. Artinya, klien menelusuri buku tamu Anda dan mengirimkannya pesan baru atau nilai apa pun yang diperoleh skrip sisi klien. Tidak ada yang dapat diproses dalam respons server yang sama.
Tentang panggilan komponen
Perhatikan bahwa skrip sisi server dan skrip sisi klien keduanya adalah skrip. Tentu saja, Anda dapat membuat komponen xmlhttp, komponen ADODB.Connection, dll., tetapi keduanya tidak dapat ditempatkan di mana pun.
Jika xmlhttp digunakan untuk merayapi halaman web (seperti koleksi) dari server, itu harus dibuat di skrip server. Jika digunakan untuk ajax klien untuk mengakses halaman sisi server di latar belakang tanpa menyegarkan, maka xmlhttp akan berjalan pada klien, dan tentu saja pada klien Dibuat di akhir.
Komponen ADODB.Connection digunakan untuk mengakses database. Secara umum, itu dibuat di sisi server, itu adalah program asp sisi server yang menjalankan data database, tetapi jika database Anda benar-benar terhubung di klien samping (seperti ini http://bbs .bccn.net/thread-224966-1-2.html), maka harus dibuat di skrip klien.
Singkatnya, hal-hal yang kontradiktif dan masing-masing pihak mempunyai ciri khasnya masing-masing. 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 yang berbeda dari kontradiksi yang sama masing-masing memiliki kekhususannya sendiri (Anda dapat menghilangkannya bagi yang tidak mengerti) Don tidak terlihat…). Prinsip ini mengharuskan kita untuk berpegang pada prinsip analisis konkrit terhadap masalah-masalah tertentu, dan di bawah bimbingan prinsip universalitas kontradiksi, secara konkrit menganalisis kekhususan kontradiksi dan menemukan metode yang tepat untuk menyelesaikannya. Kami menentang penggunaan satu metode untuk menyelesaikan kontradiksi berbagai hal. Sebuah kunci membuka gemboknya, dan inilah artinya menyanyikan lagu apa pun yang Anda dengarkan di gunung mana pun.
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 umum
<%
FungsiUkuran(b)
'Ini adalah fungsi khusus saya
TSUkuran = Tiongkok
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. Selama eksekusi sebenarnya, kita akan menemukan bahwa klien tidak menerima kode apa pun seperti TSize sama sekali, karena TSize adalah program sisi server yang diproses oleh mesin (perhatikan bahwa pemrosesan fungsi mesin adalah murni untuk skrip sisi server panggilan dan tidak akan dikirim kembali ke klien) menghilang dan tidak mungkin berfungsi pada klien. Ini berarti skrip sisi klien tidak dapat langsung memanggil fungsi skrip sisi server.
Faktanya, program ini memiliki kesalahan sintaksis. Saat mesin memproses konten ini, pertama-tama ia menemukan konten antara <% dan %>, yaitu <%TSize('variable')%> dengan aturan sintaksis VBScript. Nah, jika Anda mengubahnya menjadi <%=TSize(variable)%>, tidak akan ada kesalahan sintaksis di skrip sisi server. Saat ini, fungsi TSize dapat mengembalikan nilai China secara normal, sehingga atribut href diterima klien ditulis seperti ini: javascript: China, tidak dapat diterapkan.
Dampak skrip sisi server pada skrip sisi klien
Seperti disebutkan sebelumnya, skrip sisi server dieksekusi secara logis sebelum skrip sisi klien, sehingga kode seperti ini dapat dilakukan:
<%
Redupkan saya
Untuk i=1 sampai 5
Respon.Tulis <tipe skrip=teks/javascript> _
& peringatan('Halo Dunia! & saya & ')</script>
Berikutnya
%>
Mengenai eksekusi Response.Redirect dan javascript
Perhatikan bahwa kode berikut ini salah ditulis:
<%
Respon.Redirect indeks.asp
Respon.Tulis <tipe skrip=teks/javascript> _
& alert('Sandi salah!')</script>
%>
Ini adalah kesalahan umum. Penulis sering berpikir bahwa menulis kode dengan cara ini akan menyebabkan klien memunculkan prompt kesalahan kata sandi dan kemudian mengarahkan ke index.asp kode dipertukarkan, efek ini tidak akan dapat dicapai.
Alasannya berkaitan dengan cara server menangani dua baris kode. Tidak mungkin kedua baris kode ini berfungsi secara bersamaan.
Response.Write adalah mengirimkan sepotong teks ke klien. Isi teks ini dapat berupa skrip. Kemudian browser klien dapat mengeksekusi skrip tersebut setelah menerimanya.
Response.Redirect mengirimkan header HTTP ke klien (apa itu header HTTP? Mari kita begini, misalnya, menulis ke cookie klien adalah informasi header HTTP, dan informasi header HTTP dikirim kembali ke klien sebelum badan HTTP Browser , inilah mengapa terkadang kami mendapatkan kesalahan saat memodifikasi Cookie setelah mematikan buffering server, karena isi sudah mulai melakukan transmisi dan header HTTP tidak diperbolehkan untuk dikirim. informasi.), isi informasi memberitahu browser klien bahwa ia harus melompat ke halaman untuk menjelajah. Perhatikan bahwa informasi Pengalihan ini segera berlaku, yang berarti bahwa informasi Pengalihan ini bersifat eksklusif Ketika buffer diaktifkan, apa pun apakah Response telah digunakan. .Write menulis berapa banyak konten yang ditulis ke dalam buffer. Setelah Response.Redirect dipanggil, buffer akan dihapus dan instruksi header ini akan dikirim ke browser klien. Jika kami melacak eksekusi program secara dinamis, kami juga akan menemukan bahwa setelah memanggil Response.Redirect, program berhenti dijalankan, jadi harap dicatat bahwa program sisi server harus menutup koneksi data dan operasi lain sebelum memanggil Response.Redirect.
Jadi bagaimana contoh di atas harus diubah? Jika Anda tidak ingin mengubah index.asp untuk menambahkan prompt skrip, Anda hanya dapat menjalankan instruksi pengalihan di skrip klien, seperti ini:
<%
Respon.Tulis <tipe skrip=teks/javascript> _
& peringatan('!');location.href='index.asp'</script>
%>
Informasi kontak
Jika Anda mempunyai kritik dan saran terutama kesalahan dan kekurangan pada artikel, atau jika Anda ingin menambahkan materi baru pada artikel, Anda dapat menghubungi saya melalui forum pemrograman. Tentu saja, Anda juga dapat mengirimkan pertanyaan setelah postingan ini.
Perlu disebutkan bahwa jika Anda memiliki pertanyaan tentang algoritme dan struktur data, seperti tidak memahami mengapa program Anda salah atau meminta kode sumber algoritme tertentu, Anda mungkin tidak mendapatkan jawaban tepat waktu dengan menggunakan informasi kontak ini. Silakan bertanya di forum pemrograman.
--------------------------------------------------- -----------------------------------
hak cipta
Hak Cipta (c) 2008 multiple1902
Izin diberikan untuk menyalin, mendistribusikan dan/atau memodifikasi dokumen ini berdasarkan ketentuan Lisensi Dokumentasi Gratis GNU Versi 1.2 atau versi lebih baru yang diterbitkan oleh Free Software Foundation.