Ajax возвращает случайные значения? - PullRequest
0 голосов
/ 06 июня 2009

Я работаю над простой страницей AJAX. когда страница загружается, она должна взять результат со страницы PHP и отобразить его в текстовом поле. Если результат равен «1» (что и должно быть), то должно появиться предупреждение «Готов».

Код главной страницы (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, вызываемая для (t1_checkMatch.php) (вся информация о БД заменена на *****):

<?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";
}
?>

Когда я перехожу к t1_wait.php? Id = 16 (главная страница передает id = 16 через GET), он должен отправить запрос к t1_checkMatch.php? Id = 16, который возвращает (да, я проверял) 1 Это должно вызвать предупреждение «Готово» и вызвать появление 1 в текстовом поле, но ничего из этого не происходит. Текстовое поле пустое.

Что не так? Спасибо!

Ответы [ 3 ]

2 голосов
/ 06 июня 2009

Я считаю, что проблема, с которой вы столкнулись, связана с опечаткой

xmlhttp.responceText

На самом деле должно быть

xmlhttp.responseText

- Обновление

Также кажется, что вам не хватает {:

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

Должно быть

if(xmlhttp.responseText=="1"){
   alert("Ready!");
}
1 голос
/ 06 июня 2009

У вас есть орфографическая ошибка:

if(xmlhttp.responceText=="1")

должно быть:

if(xmlhttp.responseText=="1")

(вы написали ответ неправильно)

0 голосов
/ 06 июня 2009

Хорошо. Я понял это, но я не знаю, что я сделал. У меня была опечатка, но это не проблема. Код PHP такой же, вот код главной страницы:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...