2012-02-24 1 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

onreadystatechangeハンドラを置く場所は間違いなく間違っています。 reload関数または無名関数を使用する必要があります。 – f2lollpll

+0

しかし、私はどのようにサーバーの応答を "1"と比較しますか? – user927774

答えて

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

Thanx a lotリック!! – user927774

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 /> 
関連する問題