Pengundian AJAX
Pengundian AJAX
Dalam contoh berikut, kami akan menunjukkan program pengundian yang melaluinya keputusan pengundian dipaparkan tanpa memuat semula halaman web.
Adakah anda suka PHP dan AJAX?
Penjelasan contoh - halaman HTML
Apabila pengguna memilih salah satu daripada pilihan di atas, Jalankan fungsi bernama "getVote()". Fungsi ini dicetuskan oleh peristiwa "onclick".
poll.html Kod fail adalah seperti berikut:
<html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script> function getVote(int) { if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 执行代码 xmlhttp=new XMLHttpRequest(); } else { // IE6, IE5 执行代码 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 :
Mencipta objek XMLHttpRequest
Mencipta fungsi yang dilaksanakan apabila respons pelayan sedia
Laporan ke fail pada pelayan Hantar permintaan
Sila ambil perhatian parameter (q) yang ditambahkan pada penghujung URL (mengandungi kandungan senarai juntai bawah)
Fail PHP
Halaman pelayan yang dipanggil di atas melalui JavaScript ialah fail PHP bernama "poll_vote.php":
<?php $vote = htmlspecialchars($_REQUEST['vote']); // 获取文件中存储的数据 $filename = "poll_result.txt"; $content = file($filename); // 将数据分割到数组中 $array = explode("||", $content[0]); $yes = $array[0]; $no = $array[1]; if ($vote == 0) { $yes = $yes + 1; } if ($vote == 1) { $no = $no + 1; } // 插入投票数据 $insertvote = $yes."||".$no; $fp = fopen($filename,"w"); fputs($fp,$insertvote); fclose($fp); ?> <h2>结果:</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:
Dapatkan kandungan "poll_result. txt"
Masukkan kandungan fail ke dalam pembolehubah dan tambahkan 1 pada pembolehubah yang dipilih
Tulis keputusan pada "poll_result.txt " fail
Output graf 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".Tutorial video berkaitan yang disyorkan: "Tutorial AJAX" http://www.php.cn/course/list/25.html