نظرسنجی AJAX (AJAX Poll)
اینجا یک نظرسنجی AJAX می سازیم. «AJAX» یعنی درخواستِ بدون رفرش صفحه. «XMLHttpRequest» ابزارِ ارسال درخواست است. نتیجه زنده برمی گردد. برای آشنایی بیشتر، صفحه نظرسنجی AJAX را هم ببین.
صفحه HTML و تابع getVote()
کاربر گزینه را می زند. تابع «getVote» اجرا می شود. سپس نتیجه در همان بخش نشان داده می شود.
- یک «XMLHttpRequest» بساز.
- وقتی پاسخ آمد، HTML نظرسنجی را عوض کن.
- به «poll_vote.php» با پارامتر «vote» درخواست بفرست.
- بدون رفرش، درصدها را ببین.
<script>
function getVote(int) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("poll").innerHTML = this.responseText;
}
};
xmlhttp.open("GET", "poll_vote.php?vote=" + int, true);
xmlhttp.send();
}
<\/script>
فایل PHP: ذخیره و نمایش نتیجه
این فایل مقدار رأی را می خواند. سپس فایل متنی را آپدیت می کند. بعد درصدها را چاپ می کند.
<?php
$vote = $_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>Result:<\/h2>
<table>
<tr>
<td>Yes:<\/td>
<td><img src="poll.gif" width='<?php echo(100 * round($yes / ($no + $yes), 2)); ?>' height='20'> <?php echo(100 * round($yes / ($no + $yes), 2)); ?>%<\/td>
<\/tr>
<tr>
<td>No:<\/td>
<td><img src="poll.gif" width='<?php echo(100 * round($no / ($no + $yes), 2)); ?>' height='20'> <?php echo(100 * round($no / ($no + $yes), 2)); ?>%<\/td>
<\/tr>
<\/table>
فایل متنی نتایج
فایل «poll_result.txt» اول «Yes» و بعد «No» را دارد. مثل «0||0». وب سرور باید اجازه نوشتن داشته باشد.
نکته: اگر پوشه قابل نوشتن نیست، ذخیره شکست می خورد. سطح دسترسی را درست کن.
نکته: برای تست، فایل را با «0||0» بساز. سپس رأی بده.
جمع بندی سریع
- نظرسنجی AJAX بدون رفرش کار می کند.
- XMLHttpRequest پاسخ را برمی گرداند.
- PHP رأی ها را در فایل می نویسد.
- درصدها زنده نمایش داده می شوند.
- سطح دسترسی فایل را تنظیم کن.