簡體   English   中英

無法在AJAX中使用服務器響應

[英]Unable to use server response in AJAX

我在服務器上有一個.php文件。 我希望它根據獲取的鎖發送值1或2。 但是我無法在Javascript中使用服務器響應。 我嘗試使用innerHTML,但我不知道如何使用其值。 我對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>

代碼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的函數(匿名或其他)中。

使用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 />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM