0

我以前从未使用过 Ajax,我正在尝试学习它(我喜欢在像同事建议的那样去 jquery 之前了解一些东西)。我有一个以单选按钮开头的页面(从数据库中获取的选项),onselect 应该触发一个新的单选按钮(同样,从数据库中获取的选项)。我从简单地显示初始“选择”的结果开始,但是当我从单选按钮中选择某些内容时没有任何反应,我真的不明白为什么。如果有人能够告诉我为什么这不符合我的预期,我会很高兴。

提前致谢

主页:

<html>
  <head>
    <script>
      function showGlycopeptides(str)
      {
        var xmlhttp;
        if (str=="")
        {
          document.getElementById("txtField").innerHTML="";
          return;
        }
        if (window.XMLHttpRequest)
        {
          xmlhttp=new XMLHttpRequest();
        }
        else 
        {
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
          {
            document.getElementById("txtField").innerHTML=xmlhttp.responseText;
          }
        }
        xmlhttp.open("GET","getglycopeptides.php?q="+str,true);
        xmlhttp.send();
      }
    </script>
    <title>LeidenGlycoPeptide DataBase</title>
  </head>
  <body>
    <h1>Welcome to the LeidenGlycoPeptide DataBase</h1>
    <?php
      $link = mysql_connect("localhost","reader","") or die (mysql_error());
      mysql_select_db('leidenGlycoPeptide') or die ();
      $query = 'select protein from glycoPeptide';
      $result = mysql_query($query);
      mysql_close($link);  
    ?>
    <form>
      <p>Select glycopeptide to search for (interactive dialog)</p>
      <?php
         echo"<select name=\"prec\" onchange=\"showGlycopeptides(this.value)\">";
         echo"<option value=\"\">select glycoprotein</option>";
         while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
           foreach ($line as $col_value) {
             echo"<option value=\"$col_value\">$col_value</option>";
           }
         } 
         echo"</select>";
       ?>
    </form>
    <br>
    <div id="txtField"><b>Text field</b></div>
  </body>

获取糖肽.php:

<html>
  <head>
    <title>glyco</title>
  </head>
  <body>
    <?php
      $q=$_GET["q"];
      $link = mysql_connect("localhost","reader","") or die (mysql_error());
      mysql_select_db("leidenGlycoPeptide",$link) or die();
      $query = "select glycoType from run,glycoPeptide where run.id = glycoPeptide.id and glycoPeptide.protein like '".$q."'";
      echo "<select name=\"type\" onchange=\"foo\">";
      echo "<option value=\"\">select glycosylation</option>";
      while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
      {
        foreach ($row as $col_value)
          {
            echo"<option value=\"$col_value\">$col_value</option>";
          }
      }
      echo "</select>";
      $result = mysql_query($query);
      mysql_close($link);
    ?>
  </body>
</html>

----已编辑----

对代码进行了编辑,以便它们可以作为示例(供其他人使用)。

4

1 回答 1

2

很抱歉将此作为答案发布,但我尚未解锁发表评论的功能。

我的猜测是问题出在 ajax 请求中,因为即使未发送查询参数,PHP 文件 getglycopeptides.php 也会返回一些内容。

验证这一点的一种简单方法是使用 chrome 上的网络面板或 firefox firebug 中的控制台面板。

当您从选择中选择不同的选项时,请检查是否正在发出新请求。

另一种方法是使用 console.log('Something'); 在哪里获得 ajax 响应,如果您看到控制台中正在打印“Something”,那么 ajax 正在被触发。请记住,console.log 在 IE 中不起作用。

只需先验证这一点,这样我们就可以排除它并发现问题。

于 2013-01-11T15:51:49.727 回答