【问题标题】:Simple PHP, AJAX request简单的 PHP、AJAX 请求
【发布时间】:2010-08-30 20:27:39
【问题描述】:

现在我正在努力让这个简单的 PHP AJAX 请求工作。

<html>
    <head>
      <script type="text/javascript">
        function getSuggestions(type){
          if(type == "")
          {
            document.getElementById("entries").innerHTML="test"
            return;
          }
          if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlHttp=new XMLHttpRequest();
          }
          else
          {// code for IE6, IE5
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
          xmlHttp.onreadystatechange = function(){
            if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
            {
              document.getElementById("entries").innerHTML=xmlHttp.response; 
            }
          }
          xmlHttp.open("GET","getData.php?status="+type,true);
          xmlHttp.send();
        }
      </script>
    </head>
    <body>
    <div id="A" onclick='getSuggestions("A")'>Click for A</div>
    <div id="P" onclick='getSuggestions("P")'>Click for P</div>
    <div id="R" onclick='getSuggestions("R")'>Click for R</div>
    <div id="entries"></div>
    </body>
   </html>

下面是getData.php

<?php
  $status = $_GET["status"];
  echo $status;
?>

每次我点击任何标签时,我都会在“条目”标签中看到“未定义”。谁能解释为什么它是未定义的?

【问题讨论】:

    标签: php html ajax


    【解决方案1】:

    使用 xmlHttp.responseText

    【讨论】:

      【解决方案2】:

      这就是我处理 AJAX 的方式。本质上是akellehe回答的一个例子

      function getSuggestions(type){
          if(type == "") {
              document.getElementById("entries").innerHTML="test"
              return;
          }
      
          var r = getXmlObject();
          var url= "getData.php?status="+type;
      
          if (r.readyState == 4 || r.readyState == 0) {
      
              r.open("POST", url, true);
      
              r.onreadystatechange = function (){
                  if (r.readyState == 4) {
                      document.getElementById("entries").innerHTML= r.responseText; 
                  }
              };
      
              r.send(null);
      
          }   
      }
      
      ////////////////////////////////////
      function getXmlObject() {
          if (window.XMLHttpRequest) {
              return new XMLHttpRequest();
          } else if(window.ActiveXObject) {
              return new ActiveXObject("Microsoft.XMLHTTP");
          } else {
              alert('Status: Cound not create XmlHttpRequest Object. Consider upgrading your browser.');
          }
      }
      

      【讨论】:

      • receiveReq 是从哪里来的?
      • 哎呀。 Copy-n-Paste 错误..receiveReq 应该只是“r” - 在帖子中修复。
      猜你喜欢
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 2017-07-24
      • 2016-05-29
      相关资源
      最近更新 更多