我似乎找不到我的错误。我的表单中有一个下拉菜单,我希望有一个 onSelect 事件,使其调用一个 AJAX 脚本,该脚本查询数据库并填写公司地址的信息以填写表单。我的下拉菜单填充字段的唯一方法是当我单击表单的保存按钮时。
这是我的 html:
<select id="est_for" name="estimate_for" onselect="show_info(this.value)">
<?php
if($estimate_for == NULL){
?>
<option value="" disabled selected>Please Select a Company</option>
<?php
}
else{
echo '<option value="'.$estimate_for.'">'.$company_name.'</option>';
}
$sql = $conn->prepare('SELECT * FROM company');
$sql -> execute();
$result = $sql ->get_result();
if ($result->num_rows>0) {
while ($row=$result->fetch_assoc()) {
$company_name = $row['company'];
$company_id = $row['id'];
echo '<option value="'.$company_id.'">'.$company_name.'</option>';
}
}
else{
echo'Cannot find company information<br>';
}
?>
</select>
<div id="company_info">
<?php
if($estimate_for != NULL){
echo $company_info['company'].'<br>'.$company_info['adr_street'].'<br>'.$company_info['city'].', '.$company_info['prov'].' '.$company_info['postal'].'<br>'.$company_info['country'];
}?>
</div>
JavaScript:
function showInfo(str){
if(str==""){
document.getElementById("company_info").innerHTML = "";
return;
}
else{
if(window.XMLHttpRequest){
//IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else{
//IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200) {
document.getElementById("company_info").innerHTML = this.responseText;
}
}
}
document.write(document.getElementById("company_info").innerHTML);
xmlhttp.open("GET","create_estimate.php?q="+str,true);
xmlhttp.send();
}
最佳答案
我相信您提供的代码示例缺少一些关键信息,以及表单的其余部分(关于为什么它会在按下按钮时起作用,而不是选择 onchange 事件)...但我相信您的问题可能是你正在这样做:
onselect="show_info(this.value)"
当你的 javascript 函数定义如下时:
function showInfo(str){ ... }
注意名称差异。
如果您的 javascript 比您提供的更多,其中实际上包含名为“show_info()”的函数的定义,那么请提供它。如果没有,则可能是您出现问题的地方。
使用准备好的语句+1,但这有点有趣,因为语句中没有传递变量;)
关于javascript - 需要 Dropdown 使用 AJAX 在我的页面上填写数据库信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46797855/