2014-05-06 36 views
1

這裏是我的代碼:數AJAX PHP的計數的按鈕,點擊計數器不顯示

1/index.html的

<html> 
<head> 
    <title>Example</title> 
</head> 
<body> 
    <script type="text/javascript"> 

function getXMLHttp() 
{ 
    var xmlHttp 
    try 
    { 
    xmlHttp = new XMLHttpRequest(); 
    } 
    catch(e) 
    { 
    try 
    { 
     xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
    catch(e) 
    { 
     try 
     { 
     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     catch(e) 
     { 
     alert("AJAX not supported.") 
     return false; 
     } 
    } 
    } 
    return xmlHttp; 
} 

function MakeRequest() 
{ 
    var xmlHttp = getXMLHttp(); 
    xmlHttp.onreadystatechange = function() 
    { 
    if(xmlHttp.readyState == 4) 
    { 
     HandleResponse(xmlHttp.responseText); 
    } 
    } 
    xmlHttp.open("GET", "count.php", true); 
    xmlHttp.send(null); 
} 

function HandleResponse(response) 
{ 
    document.getElementById('ResponseDiv').innerHTML = response; 
} 
    </script> 
    <input type='button' onclick='MakeRequest();' value='Button'/> 
    <br /> 
    <br /> 
    <div id='ResponseDiv'> 
     Count 
    </div> 
</body> 

count.php:

<?php 

$fp = false; 
// Open file for reading, then writing 
while (($fp=fopen('clicks.txt','r+'))===false) { 
    usleep(250000); // Delay 1/4 second 
} 
// Obtain lock 
while (!flock($fp, LOCK_EX)) {  
    usleep(250000); // Delay 1/4 second 
} 
// Read Clicks 
$clicks = trim(fread($fp,1024)); 
// Add click 
$clicks++; 
// Empty file 
ftruncate($fp,0); 
// Write clicks 
fwrite($fp, $clicks); 
// Release Lock 
flock($fp, LOCK_UN); 
// Release handle 
fclose($fp); 

?> 

下面是它的功能:點擊按鈕,AJAX函數調用php,增加點擊次數然後將其保存在txt文件中即HandleResponse函數應該讓我向用戶顯示計數的數量。

我檢查了txt文件,並跟蹤了點擊次數。但它從來沒有在ResponseDiv中顯示。我的意思是,應該顯示點擊次數時不會顯示任何內容。 這裏有什麼問題?

+0

'if(xmlHttp.readyState == 4){HandleResponse(xmlHttp.responseText); } else {alert(xmlHttp.readyState); }做這個改變,這個警報是怎麼說的? –

+1

你永遠不會在腳本底部回顯'$ clicks',只需添加'echo $ clicks;'。 – cmorrissey

+0

最好組織這樣的問題: * 1 *:問題描述。 * 2 *:對代碼示例的解釋。 * 3 *:您的最後一段 – rpax

回答

0

我找到了解決方案。我只是補充道:{if(xmlHttp.readyState == 4){HandleResponse(xmlHttp.responseText); } else {HandleResponse(xmlHttp.responseText); }