代码之家  ›  专栏  ›  技术社区  ›  Computerish

Ajax返回随机值?

  •  0
  • Computerish  · 技术社区  · 16 年前

    我正在开发一个简单的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)(所有db信息替换为*****):

    <?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(通过get传递id=16的主页),它应该向T1_checkmatch.php发送一个请求?id=16,返回(是,我选中)1。这将触发一个警告,提示“准备就绪”,并导致1出现在文本框中,但这两种情况都不会发生。文本框为空。

    怎么了?谢谢!

    3 回复  |  直到 16 年前
        1
  •  2
  •   Jordan S. Jones    16 年前

    我相信你遇到的问题是由于打字错误

    xmlhttp.respontext文本

    真的应该是

    xmlhttp.responseText
    

    ——更新

    似乎您还缺少 { :

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

    应该是

    if(xmlhttp.responseText=="1"){
       alert("Ready!");
    }
    
        2
  •  1
  •   Matt    16 年前

    您有拼写错误:

    if(xmlhttp.responceText=="1")
    

    应该是:

    if(xmlhttp.responseText=="1")
    

    (你拼写错误)

        3
  •  0
  •   Computerish    16 年前

    好啊。我知道了,但我不知道我做了什么。我确实有错别字,但那不是问题。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>