2012-02-24 50 views
0

我在服務器上有一個.php文件。我希望它根據它獲取的鎖發送值1或2。不過,我無法在Javascript中使用服務器響應。我曾嘗試使用innerHTML,但我不知道如何使用它的值。我對AJAX完全陌生,所以請原諒我可能犯的任何愚蠢錯誤。無法在AJAX中使用服務器響應

PHP文件

<?php 
$fp1=fopen("a1.jpg","r"); 
$fp2=fopen("a2.jpg","r"); 
if(flock($fp1,LOCK_EX)) 
{ 
    echo "a1 locked"; 
    $ch=1; 
} 
else 
{ 
    flock($fp2,LOCK_EX); 
    echo "a2 locked"; 
    $ch=2; 
} 
$response=$ch; 
echo $ch; 
echo $response; 
?> 

.html文件

<html> 
<head> 
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<title>Smart Surveillance Camera</title> 
<script language="Javascript"> 

function loadXMLDoc() 
{ 
    var xmlhttp; 
    xmlhttp=new XMLHttpRequest(); 
    //document.write ("request created"); 
    xmlhttp.onreadystatechange=reload() 
    { 
      if(xmlhttp.readyState==4 && xmlhttp.status==200) 
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    xmlhttp.open("GET","lock.php",true); 
    xmlhttp.send(); 
    //document.write (serverResponse); 
    loadXMLDoc(); 
} 

function reload() 
{ 
    document.write(); 
    if(myDiv==1) 
      document.campicture.src="a1.jpg"; 
    else 
      document.campicture.src="a2.jpg"; 

} 
</script> 
</head> 

<body bgcolor="white" onLoad="loadXMLDoc()"> 
<div id="myDiv"> 
<center> 
<font size==-1> 
<h1>SMART SURVEILLANCE CAMERA PAGE</h1> 
<img name="campicture" src="founders.jpg" border=1 width=320 height=240 alt="AYS   founder's IMAGE"><br /> 
</font> 
</center> 
</body> 
</html> 
+0

你的JavaScript是絕對錯誤的,你把onreadystatechange處理程序。您應該使用重載功能或匿名功能。 – f2lollpll 2012-02-24 06:17:52

+0

好的。但是,我如何將服務器響應與「1」進行比較? – user927774 2012-02-24 06:24:44

回答

1

該代碼xmlhttp.onreadystatechange=reload()是不會做你想做的。這既沒有定義也沒有爲onreadystatechange回調分配函數。定義回調,你的代碼看起來應該像下面的任一:

xmlhttp.onreadystatechange = reload; 

//later 
function reload() { 
    //the actions to do on response 
}  

xmlhttp.onreadystatechange = function() { 
    // the actions to do on response 
} 

不會有您當前使用的量有多大差別。無論你選擇使用哪一種,裏面都應該有你的代碼if(xmlhttp.readyState==4 && xmlhttp.status==200)

然後使用您收到的值。它看起來像是將值設置爲myDiv,然後嘗試稍後使用該值(儘管myDiv == 1無論如何都不會工作)。但是,您不需要那樣做。在你readystatechange功能,你可以直接使用值:

if (xmlhttp.responseText == "1") 
    document.campicture.src="a1.jpg"; 
else 
    document.campicture.src="a2.jpg"; 

記住,一部分去功能(匿名或其他)裏面那個被綁定到onreadystatechange

+0

感謝很多裏克! – user927774 2012-02-24 06:30:09

0

使用jQuery,它將使Ajax請求和屬性修改更容易。

<script> 
function loadXMLDoc() 
{ 
    var xmlhttp; 
    $.ajax({ 
     url: 'lock.php', 
     type: 'GET', 
     success: function(responseText) { 
      if(responseText === 1) 
       $("#campicture").attr('src', 'a1.jpg'); 
      else 
       $("#campicture").attr('src', 'a2.jpg'); 

     } 
    }) 

    loadXMLDoc(); 
} 
</script> 

<img id="campicture" src="founders.jpg" border=1 width=320 height=240 alt="AYS   founder's IMAGE"><br />