Ajax Rastgele Değerler döndürür?

3 Cevap php

Ben basit bir AJAX sayfada çalışıyorum. sayfa yüklendiğinde, bu PHP sayfasından sonuç almak ve metin kutusunda görüntülemek gerekir. Sonuç (olması gerektiği) "1" ise, o zaman diyerek bir uyarı açılır gerekir "hazır."

Ana sayfanın kod (t1_wait.php):

<html><head><title>Waiting...</title></head><body>

<script type="text/javascript">
function update(id)
{
   var xmlhttp;
   if (window.XMLHttpRequest){
         // code for IE7+, Firefox, Chrome, Opera, Safari
         xmlhttp=new XMLHttpRequest();
   }else if (window.ActiveXObject){
      // code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }else{
      alert("Your browser does not support XMLHTTP!");
   }

   xmlhttp.onreadystatechange=function(){
      if(xmlhttp.readyState==4){
         if(xmlhttp.responseText=="1")
            alert("Ready!");
         }
         document.myForm.status.value=xmlhttp.responseText;
      }
   }

   var requesturl = "t1_checkMatch.php?id="+id;
   xmlhttp.open("GET",requesturl,true);
   xmlhttp.send(null);

   // delay for 1 sec
   var date = new Date();
   var curDate = null;
   do { curDate = new Date(); }
   while(curDate-date < 1000);

}

<?php
   echo "update(".$_GET['id'].");";
?>

</script>


<form name="myForm">
Status: <input type="text" name="status" />
</form>

</body></html>

PHP sayfası (t1_checkMatch.php) (tüm db bilgi * ile değiştirildi) dışarı çağrıldığını:

<?php
$db_user = "*****";
$db_pass = "*****";
$db_name = "*****";
mysql_connect(localhost,$db_user,$db_pass);
@mysql_select_db($db_name) or die("Unable to select database");

$match_id = $_GET['id'];

$match_info = mysql_query("SELECT * FROM ***** WHERE id=".$match_id);
if(mysql_result($match_info,0,"usr2")==-1){
   echo "1";
}else{
   echo "0";
}
?>

Ben? Id = 16 (GET = 16 ana sayfa geçen id), bu t1_checkMatch.php için (evet, kontrol ettim) 1 döndürür = 16? Id, bir isteği göndermek gerekir t1_wait.php giderken. Bu gerekir metin kutusunda görünmesini "Ready" ve neden 1 söyleyerek bir uyarı tetikler, ancak bunların hiçbiri olur. Metin kutusu boştur.

Ne oldu? Teşekkürler!

3 Cevap

Tamam. Ben bunu anladım, ama ben ne yaptım bilmiyorum. Ben bir yazım hatası var, ama bu sorun değil. PHP kodu aynı, burada ana sayfa kodu:

<html>
<body>

<script language="javascript" type="text/javascript">
<!-- 
//Browser Support Code
function update(id){
    var ajaxRequest;  // The variable that makes Ajax possible!

    try{
    	// Opera 8.0+, Firefox, Safari
    	ajaxRequest = new XMLHttpRequest();
    } catch (e){
    	// Internet Explorer Browsers
    	try{
    		ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    	} catch (e) {
    		try{
    			ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
    		} catch (e){
    			// Something went wrong
    			alert("Your browser broke!");
    			return false;
    		}
    	}
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
    	if(ajaxRequest.readyState == 4){
    		if(ajaxRequest.responseText.indexOf("1")!=-1){
    		   document.myForm.status.value = "Ready!";
    		   window.location = "t1_game.php?id="+id;
    		}else{
    		   document.myForm.status.value = "Waiting..."
    		   update(id);
    		}
    	}
    }
    ajaxRequest.open("GET", "t1_checkMatch.php?id="+id, true);
    ajaxRequest.send(null); 
}

<?php
echo "update(".$_GET["id"].");"
?>

//-->
</script>



<form name='myForm'>
Status: <input type='text' name='status' />
</form>
</body>
</html>

Ben içine çalıştıran sorunun bir yazım hatası nedeniyle olduğuna inanıyorum

xmlhttp.responceText

Gerçekten olmalı

xmlhttp.responseText

- Güncelleme

Ayrıca eksik görünür bir {:

if(xmlhttp.responseText=="1")
   alert("Ready!");
}

Olmalı

if(xmlhttp.responseText=="1"){
   alert("Ready!");
}

Eğer bir yazım yanlışı var:

if(xmlhttp.responceText=="1")

olmalıdır:

if(xmlhttp.responseText=="1")

(Eğer yanlış yanıt yazıldığından)