【问题标题】:Ajax receives response from server and saves it in a variable for later PhP usageAjax 从服务器接收响应并将其保存在变量中以供以后使用 PhP
【发布时间】:2017-03-21 16:56:53
【问题描述】:

我有一个问题,我无法解决。我对 Ajax 和 PhP 还很陌生,因此我将不胜感激。

我的本​​地主机上有一个数据库。我试图实现的是从服务器获得来自数据库的信息的响应。我想将该信息存储在一个变量中,以便以后可以在某个地方“回显”。

这背后的整个想法是:

您在输入字段中输入产品编号。请求正在发送到数据库。一旦您收到来自数据库的响应,产品编号下方的另一个输入字段将自动填写产品名称。单击下一步,您会再次看到输入字段,其中填充了基于您之前输入的产品编号的其余信息。

到目前为止,问题是我可以在发送所有内容后立即得到响应,但是如果我只想查看一条信息,然后“回显”其他所有信息,但我不知道该怎么做。

我希望我确实设法解释了我的问题,如果没有,我会尝试添加更多关于它的信息。

这是我的 Ajax 代码。我不知道如何存储从数据库中获取的信息,以便以后使用。

<script>
function showPump(str) {
    if (str == "0") {
        document.getElementById("pumpInfo").innerHTML = "";
        return;
    } else { 
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("pumpInfo").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET","getpump.php?q="+str,true);
        xmlhttp.send();
    }
}
</script>

部分 HTML:

<form>
    Product number:<input type="text" name="productNR" onfocusout="showPump(this.value)">
</form>
<br>
<div id="pumpInfo"><b>Pump info will be below</b></div>

PHP

mysqli_select_db($con,"pumps");
$sql="SELECT * FROM pumps WHERE product_nr = '".$q."'";
$result = mysqli_query($con,$sql);

while($row = mysqli_fetch_array($result)) {
    echo "Product type <input value=" . $row['type'] . "></br>";
}
mysqli_close($con);
?>

最终结果是,一旦我填写了产品编号字段,“结果”(产品类型)就会显示在其下方,但我还有 4 个数据库条目希望在下一步中使用。

【问题讨论】:

  • 您可能希望将其称为“在 DOM 上显示”而不是“回声”
  • 当您说“下一步”时,下一步是在同一页面上进行还是在不同页面上进行?
  • @kittykittybangbang 下一步在同一页面上,但在你完成第一步之前它当然不会显示。

标签: javascript php mysql ajax database


【解决方案1】:

这是一种存储您通过 AJAX 接收的值的方法。

//results will be an array
var results;

if (this.readyState == 4 && this.status == 200) {
  document.getElementById("pumpInfo").innerHTML = this.responseText;
  results.push(this.responseText); //push the value of this.reponseText to the array.
}

//this pops the value of the first element of the results array
alert(results[0]);

【讨论】:

  • 感谢您的回复!稍后会尝试一下,但作为附加信息,这将仅存储在数据库中的一个数据条目中?我正在寻找一种解决方案来存储 4 个不同的数据条目,以便以后在 PhP 中将它们用作“回声”
  • 它将存储您需要的任意数量。结果被推入一个数组。你叫得越多,它推得越多。因此,例如,当您需要第二个结果时,只需说 result[1]
猜你喜欢
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 2013-08-27
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
  • 2011-05-27
  • 2011-11-07
相关资源
最近更新 更多