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中文网(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:

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']);
// 获取文件中存储的数据
$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:

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).


Meneruskan pembelajaran
||
<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>
  • Cadangan kursus
  • Muat turun perisian kursus