Mfano wa Hatua wa Kura wa AJAX wa PHP

Kufunga AJAX

Kwenye mifano wa AJAX hii, tutachukua programu ya kufunga, kwa sababu tovuti inaweza kufikia matokeo bila kurealia ulozi wa tovuti.

Je, hivi karibuni unafikia PHP na AJAX?

Ndio:
Hapana:

Mfumo huu una viandiko vitano:

  • Foramu ya HTML
  • JavaScript
  • Picha ya PHP
  • Maktaba ya matumizi ya andiko

Foramu ya HTML

Hii la nje wiziwa wa HTML. Hii ina muungano wa foramu ya HTML mpya, na muungano wa kifupi na faili ya JavaScript:

<html>
<head>
<script src="poll.js"></script> 
</head>
<body>
<div id="poll">
<h2>Unafikiria PHP na AJAX kwa sasa?</h2>
<form>
Ndio: 
<input type="radio" name="vote" 
value="0" onclick="getVote(this.value)">
<br />
Hapana: 
<input type="radio" name="vote" 
value="1" onclick="getVote(this.value)">
</form>
</div>
</body>
</html>

Maelezo ya maelezo - Formu ya HTML

Kama unavyojua, ukurasa wa HTML juu una formu ya HTML kimsingi, kina div kina ina mifano ya kiwango kumi.

Hii ni sababu kwa formu hii:

  • Kama mwanasayari anachagua "Ndio" au "Hapana", hatukio linalotukia
  • Kama matukio yanavyotukia, inafanyishwa getVote() function
  • Formu hii inayofikia div kina ya jina "poll" hivi. Kama data iliyotumika kwa kweli kwa getVote() kufikia data itakuwa inatumiwa kufikia formu hii.

Faili ya matukio

Faili ya matukio (poll_result.txt) inahifadhi data ya programu ya kura.

Inaonekana kama hii:

0||0

Namba ya kwanza inaeleza "Hapana" kura, namba ya pili inaeleza "Ndio" kura.

Maelezo:Tazama kwamba hii mengineke ya web server yako kusoma faili ya matukio. Haingepatikani wengine kupata aina ya ufikiaji, isipokuwa web server (PHP).

JavaScript

JavaScript 代码存储在 "poll.js" 中,并于 HTML 文档相连接:

var xmlHttp
function getVote(int)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 } 
var url="poll_vote.php"
url=url+"?vote="+int
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
} 
Funksi ya stateChanged() 
{ 
 Au if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 document.getElementById("poll").
 innerHTML=xmlHttp.responseText;
 } 
} 
Funksi ya GetXmlHttpObject()
{ 
var objXMLHttp=null
Au if (window.XMLHttpRequest)
 {
 objXMLHttp=new XMLHttpRequest()
 }
Au if (window.ActiveXObject)
 {
 objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
 }
Kutumia objXMLHttp
}

Maelezo ya maelezo:

Funksi za stateChanged() na GetXmlHttpObject kwa kusababisha kwa kumwambia Mfano wa Hatua wa AJAX wa PHP Mfano wa kati hauwezi kuelewa.

Funksi ya getVote()

Kila kikundi cha kufikia kwa kumwambia programu ya kusababisha kwa kumwambia kikundi cha HTML kwa kumwambia "yes" au "no"

  1. Inasajili url inayotumika kwa kusababisha kumwambia server (jina la faili)
  2. Wingia kikundi cha ujumbe (vote) kwa url, na kikundi cha ujumbe kinahusiana na masababu ya kufikia kikundi cha kichwa cha kufikia
  3. Wingia namna ya tofauti, ili kusaidia kuingia kwa server kwa kusababisha kusafirishwa faili inayotumika kwa kusafirishwa
  4. Tumia kikundi cha GetXmlHttpObject kumekisha XMLHTTP kwa kumtaarifu kwamba kila muutuzo huzingatia kumwambia stateChanged kufanyika
  5. Kuifungua XMLHTTP kwa tumia url yenye uhusiano
  6. Kutuma kwa kumwambia server huzina ya HTTP

Picha ya PHP

Makini ya JavaScript inapewa kwa kusema picha ya server ambayo ina jina "poll_vote.php" ni faili ya PHP ya kawaida.

<?php
$vote = $_REQUEST['vote'];
//get content of textfile
$filename = "poll_result.txt";
$content = file($filename);
//put content in array
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];
if ($vote == 0)
 {
 $yes = $yes + 1;
 }
if ($vote == 1)
 {
 $no = $no + 1;
 }
//ingiza kura kwenye faili ya txt
$insertvote = $yes."||".$no;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
?>
<h2>Matokeo:</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>

Maelezo ya maelezo:

Aina ya kina kutoka JavaScript, kisha kufika:

  1. Kupata maneno ya faili "poll_result.txt"
  2. Kuandika maneno ya faili kwenye kipakuo, kwa kuzingatia kipakuo cha kina 1
  3. Kuandika matokeo kwenye faili "poll_result.txt"
  4. Kuweka matokeo ya kura kwa muonekano