php - 当 AJAX 用于基于下拉菜单选择显示数据时,按钮不起作用
问题描述
我有一个我们的页面(index.html),用户可以从下拉菜单中选择选项。基于选择的数据将从数据库中获取并使用 AJAX 显示在同一页面上(第二个文件称为 getParameter.php)。一切正常。现在我尝试添加一个按钮,以便打开一个新页面,用户可以编辑并将新值发送到数据库。但是按下按钮什么也没做。我尝试使用其他 html 文件。它适用于其他任何地方。请提供任何帮助
索引.html
//AJAX
<script>
function showParameterData(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
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 (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","getParameterData.php?q="+str,true);
xmlhttp.send();
}
}
</script>
//drop down option selection
<body>
//showParameterData() is the function
<form>
<select name="Device" onchange="showParameterData(this.value)">
<option value="">Select</option>
<option value="1">Device A </option>
<option value="2">Device B </option>
<option value="3">Device C </option>
<option value="4">Device D </option>
<option value="5">Device E </option>
<option value="6">Device F </option>
</select>
</form>
//bitton to edit and send data
<div class="edit_button_class" style= "float:right;">
<form action="edit.html" method="get" target="_blank">
<input type="submit" name="submit" id ="mybutton1" value="Click to Edit" />
</form>
</div>
<div id="txtHint"></div>
</body>
//getParameter.php
<?php
$q = intval($_GET['q']);
include ("DBconnect.php");
$conn= mysqli_connect( $dbhost, $dbuser, $dbpass, $db ) or die("Could not connect: " .mysqli_error($conn) );
$sql="SELECT * FROM parameter WHERE ID = '".$q."'";
$result = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($result)) {
$price = $row['price'];
$version = $row['version'];}
echo '<table>';
echo "<tr>
<th>Price of the Device :</th>
<td > $price </td>
</tr>";
echo "<tr>
<th>version of the Device :</th>
<td > $version </td>
</tr>";
echo '</table>';
echo '</div>';
当我按下按钮时,URL 变成了奇怪的东西。它不会编辑.html。即使我刷新页面,奇怪的 URL 仍然存在。即使它显示 index.html 页面在 URL 中有一些额外的东西
解决方案
您在 URL 中看到的内容是获取参数。您通过使用 method='get' 您告诉表单以这种方式提交。
这将做的是将所有输入名称及其值发送到 URL 中,并将它们“附加”到您选择的操作页面。
例如,您单击按钮会将您发送到edit.html,其中包含提交的获取参数,其值为“单击以编辑”。任何具有 name 属性的内容都将作为 get 参数发送。您不需要提交输入的名称。
如果您使用提交按钮将您的选择放入表单中,它将发送选择的参数,这意味着您可以在您的编辑页面中使用它。
<div class="edit_button_class">
<form action="edit.html" method="get" target="_blank">
<select name="Device" onchange="showParameterData(this.value)">
<option value="">Select</option>
<option value="1">Device A </option>
<option value="2">Device B </option>
<option value="3">Device C </option>
<option value="4">Device D </option>
<option value="5">Device E </option>
<option value="6">Device F </option>
</select>
<input type="submit" id ="mybutton1" value="Click to Edit" />
</form>
</div>
我从输入中删除了名称,因为这会导致它作为 GET 参数发送。使用上述内容,您将被发送到 /edit.html?submit=Click+to+Edit,然后您可以在您的编辑页面中使用它来获取您需要的内容。
希望这可以帮助。