Pengundian AJAX
Pengundian AJAX
Dalam contoh berikut, kami akan menunjukkan program pengundian yang melaluinya keputusan undian dipaparkan tanpa memuat semula halaman web.
Adakah anda suka PHP dan AJAX?
Ya:
Tidak:
Penjelasan contoh - halaman HTML
Apabila pengguna memilih salah satu daripada pilihan di atas, fungsi bernama "getVote()" akan dilaksanakan. Fungsi ini dicetuskan oleh peristiwa "onclick".
kod fail poll.html adalah seperti berikut:
<html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> <script> function getVote(int) { if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 執(zhí)行代碼 xmlhttp=new XMLHttpRequest(); } else { // IE6, IE5 執(zhí)行代碼 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("poll").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","poll_vote.php?vote="+int,true); xmlhttp.send(); } </script> </head> <body> <div id="poll"> <h3>你喜歡 PHP 和 AJAX 嗎?</h3> <form> 是: <input type="radio" name="vote" value="0" onclick="getVote(this.value)"> <br>否: <input type="radio" name="vote" value="1" onclick="getVote(this.value)"> </form> </div> </body> </html>
fungsi getVote() akan melaksanakan langkah berikut:
1) Cipta objek XMLHttpRequest
2 ) Cipta dalam Fungsi dilaksanakan apabila respons pelayan sedia
3) Hantar permintaan kepada fail pada pelayan
4) Sila ambil perhatian parameter (q) yang ditambahkan pada penghujung URL (mengandungi kandungan senarai juntai bawah)
Fail PHP
Halaman pelayan yang dipanggil melalui JavaScript di atas ialah fail PHP bernama " poll_vote.php":
<?php $vote = htmlspecialchars($_REQUEST['vote']); // 獲取文件中存儲(chǔ)的數(shù)據(jù) $filename = "poll_result.txt"; $content = file($filename); // 將數(shù)據(jù)分割到數(shù)組中 $array = explode("||", $content[0]); $yes = $array[0]; $no = $array[1]; if ($vote == 0) { $yes = $yes + 1; } if ($vote == 1) { $no = $no + 1; } // 插入投票數(shù)據(jù) $insertvote = $yes."||".$no; $fp = fopen($filename,"w"); fputs($fp,$insertvote); fclose($fp); ?> <h2>結(jié)果:</h2> <table> <tr> <td>是:</td> <td> <span style="display: inline-block; background-color:green; width:<?php echo(100*round($yes/($no+$yes),2)); ?>px; height:20px;" ></span> <?php echo(100*round($yes/($no+$yes),2)); ?>% </td> </tr> <tr> <td>否:</td> <td> <span style="display: inline-block; background-color:red; width:<?php echo(100*round($no/($no+$yes),2)); ?>px; height:20px;"></span> <?php echo(100*round($no/($no+$yes),2)); ?>% </td> </tr> </table>
Apabila nilai yang dipilih dihantar daripada JavaScript ke fail PHP, apa yang berlaku:
1) Dapatkan kandungan fail "poll_result.txt"
2) Letakkan kandungan fail ke dalam pembolehubah, Dan tambahkan 1 pada pembolehubah yang dipilih
3) Tulis hasilnya pada fail "poll_result.txt"
4) Output grafik keputusan pengundian
Fail Teks
Data daripada program pengundian disimpan dalam fail teks (poll_result.txt).
Data yang disimpannya adalah seperti berikut:
3||4
Nombor pertama mewakili bilangan undian untuk "Ya " , nombor kedua mewakili bilangan undian "Tidak".
Nota: Ingat untuk hanya membenarkan pelayan web anda mengedit fail teks ini. Jangan biarkan orang lain mendapat akses kecuali pelayan web (PHP).