varfoo='bar';varbaz=;alert(baz );Mengapa ini tidak menulis "bar" pada fail teks saya, sebaliknya memberi amaran kepada "42"?">
Saya ada kod ini:
Mengapa ini tidak menulis "bar" pada fail teks saya sebaliknya memberi amaran kepada "42"?
Nota: Semakan awal soalan ini secara eksplisit menangani PHP pada pelayan dan JavaScript pada klien. Apabila satu bahasa berjalan pada klien dan bahasa lain pada pelayan (walaupun bahasa yang sama), sifat masalah dan penyelesaian adalah sama untuksebarang bahasa. Pertimbangkan ini apabila anda melihat jawapan yang bercakap tentang bahasa tertentu.
Untuk menentukan sebab kodPHPtidak berfungsi dalam kodJavaScript, kita perlu memahami bahasasebelah pelanggandansebelah pelayan dan cara ia berfungsi.
Bahasa sisi pelayan (PHP, dll.): Mereka mendapatkan semula rekod daripada pangkalan data, menyambungmelaluitanpa negaraHTTP, dan melakukan banyak operasi yang memerlukan keselamatan. Mereka berada di pelayan dan program ini tidak pernah mendedahkan kod sumber mereka kepada pengguna.
Jadi, anda boleh melihat dengan mudah bahawa bahasa sebelah pelayan mengendalikan permintaan HTTP dan memprosesnya, dan, seperti yang dikatakan @deceze,PHP melaksanakan pada pelayan dan mengeluarkan beberapa kod HTML dan mungkin JavaScript, yang dihantar kepada klien sebagai Respons , yang mentafsir HTML dan melaksanakan JavaScript.
Sebaliknya,bahasa sebelah pelanggan (seperti JavaScript)ada dan dijalankan dalam penyemak imbas.Skrip sebelah pelangganbiasanya merujuk kepada kelas program komputer pada rangkaian yang dilaksanakan sebelah klien oleh pelayar web pengguna, bukannyasebelah pelayan. p>
JavaScript kelihatan kepada pengguna dan boleh diubah suai dengan mudah, jadi untuk keselamatan kami tidak boleh bergantung pada JavaScript.
Jadi apabila anda membuat permintaanHTTPkepada pelayan, pelayan terlebih dahulu membaca fail PHP dengan teliti untuk melihat sama ada terdapat sebarang tugas yang perlu dilakukan, dan kemudian menghantar respons kepada klien. Sekali lagi, seperti yang dikatakan @deceze, *sebaik sahaja PHP selesai mengeluarkan respons, skrip tamat dan tiada apa yang berlaku pada pelayan sehingga permintaanHTTPbaharu datang. *
Jadi sekarang bagaimana jika saya perlu menghubungi PHP? Ia bergantung pada cara anda perlu melakukan ini: dengan memuat semula halaman atau menggunakan panggilan AJAX.
Bacaan yang bagus:
Kod anda dibahagikan kepada dua bahagian bebas sepenuhnya,sebelah pelayandansebelah pelanggan.
Kedua-dua pihak berkomunikasi melalui permintaan dan respons HTTP. PHP melaksanakan pada pelayan dan mengeluarkan beberapa kod HTML dan mungkin JavaScript, yang dihantar sebagai respons kepada klien, di mana HTML ditafsirkan dan JavaScript dilaksanakan. Setelah PHP selesai mengeluarkan respons, skrip tamat dan tiada apa yang berlaku pada pelayan sehingga permintaan HTTP baharu datang.
Kod contoh dilaksanakan seperti berikut:
Langkah 1, PHP melaksanakan semua kod antara
teg. Hasilnya begini:
file_put_contents
调用没有产生任何结果,它只是将“ + foo + ”写入文件。Kod HTML/JavaScript yang dijana kini dihantar kepada pelanggan dan dinilai di sana.
alert
调用有效,而foo
Pembolehubah tidak digunakan di mana-mana.Semua kod PHP dilaksanakan pada pelayan sebelum pelanggan mula melaksanakan sebarang JavaScript. Tiada kod PHP yang tinggal dalam respons yang JavaScript boleh berinteraksi.
Untuk memanggil kod PHP tertentu, pelanggan mesti menghantar permintaan HTTP baharu kepada pelayan. Ini boleh dicapai menggunakan salah satu daripada tiga kaedah yang mungkin:
Berikut ialah soalan yang menggariskan kaedah ini dengan lebih terperinci
Anda juga boleh menggunakan JavaScript untuk memberitahu pelayar menggunakan
window.location
untuk membuka halaman baharu atau menyerahkan borang, meniru kemungkinan 1. dan 2.