【问题标题】:form is displaying again on screen after passing value to php code using ajax使用ajax将值传递给php代码后,表单再次显示在屏幕上
【发布时间】:2017-12-17 06:24:44
【问题描述】:

我试图将数据从 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]

【问题讨论】:

  • 不要使用mysql_* 函数。它们自 v5.5(2013 年 6 月)起已被弃用,自 v7.0(2015 年 12 月)起已被删除。而是将mysqli_*PDO 函数与prepared statementsbound parameters 一起使用。
  • 是的,我会改变它。关于我问的问题有什么建议吗? @AlexHowansky
  • 能否请您突出显示您的 PHP 文件内容和 HTML 文件内容?截至目前,您的所有代码似乎都已写入单个文件。

标签: php html ajax forms scripting


【解决方案1】:

其实没什么问题。当服务器执行完 PHP 代码后,它会继续读取 HTML 内容并将其发送到浏览器。

要修复它,请在 PHP 代码中的 if 条件 if($q=='6000'){ 的结束大括号之前添加这一行:

exit();

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

【讨论】:

  • 不客气!关于 mysqli 函数,您可以查看此链接以获取更多信息:w3schools.com/PHP/php_ref_mysqli.asp
  • 还有一个问题,我实际上是在将一个项目添加到购物车中,这样 exit() 就会出现问题,因为它不会继续执行 php 代码直到最后。因此,我不会被重定向到“购物车”。有什么可以解决的吗? @jash101
  • @user8237728 加入购物车功能应该是用javascript实现的,这样即使用户短暂离线,他的购物车物品也不会乱七八糟。您应该仅在结帐时将购物车信息传递给服务器。这就是所有主要电子商务公司所做的......
  • 问题是我没有建立这个网站。我只是想向它添加下拉功能。现在在修改代码并将 exit() 函数添加到它之后,它不会继续到它下面的 php 代码,之后绑定 sql 列添加到购物车。所以我让下拉菜单完美地工作,但是当我按下添加到购物车按钮时它什么也没做。 @ jash101
猜你喜欢
  • 2014-02-02
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 2013-10-22
  • 2017-10-25
  • 1970-01-01
相关资源
最近更新 更多