使用ajax将值传递给php代码后,窗体再次显示在屏幕上

时间:2017-07-12 17:32:18

标签: php html ajax forms scripting

我试图将数据从html表单发送到PHP代码,将所选值与数据库中的某些信息进行比较,并将结果返回显示...到目前为止,我得到了所有工作并且数据显示正确。问题是,当我得到结果时,我会再次在第一个下方显示下拉框。

我实际上将它们分成两个文件d.php和form.html(其中包括表单和ajax代码),它实际上以这种方式完美地工作。但我实际上是想在一个php文件中获取所有代码。这是我的代码:

mysql_select_db("");


    $q = intval($_GET['q']);


      if($q=='6000'){

          $getrow= "SELECT  ProdPrice WHERE ProdID = 6000";
                $list = mysql_query($getrow, $...) or die(mysql_error());
                $rs = mysql_fetch_assoc($list);
                $totalRows_list = mysql_num_rows($list);
                echo $rs['ProdPrice'];



      }



?>


 <html>
<head>

<script>
function showUser(str) {
  if (str=="") {
    document.getElementById("txtHint").innerHTML="";
    return;
  } 
  if (window.XMLHttpRequest) {

    xmlhttp=new XMLHttpRequest();
  } else { 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
      document.getElementById("txtHint").innerHTML=this.responseText;
    }
  }
  xmlhttp.open("GET","?q="+str,true);
  xmlhttp.send();

}
</script>
</head>
<body>


<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="6000">15</option>
<option value="2">n</option>
<option value="3">n</option>
<option value="4">e</option>
</select>
</form>
<br>
<div id="txtHint"></b></div>
</br>
</body>
</html>

                    [before submitting form value][1]

[after selecting the value][1]

1 个答案:

答案 0 :(得分:0)

实际上并没有什么不妥。当服务器完成PHP代码的执行后,它将继续读取HTML内容并将其发送到浏览器。

要解决此问题,请在PHP代码中if条件if($q=='6000'){的结束括号之前添加此行:

exit();

另外,正如Alex评论的那样,请使用mysqli_*函数。 mysql_*现已弃用,因此容易受到安全威胁。