javascript - 需要 Dropdown 使用 AJAX 在我的页面上填写数据库信息

标签 javascript php ajax

我似乎找不到我的错误。我的表单中有一个下拉菜单,我希望有一个 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/

相关文章:

javascript - IE 使用类 jquery 返回相同的最后一个单选按钮值

javascript - javascript如何处理大数?

php - 将 html 日期选择器设置为 null

php - 如何从该字符串返回多维数组?

javascript - fullcalendar 最后读取 ajax

javascript - 数组中字符串长度的差异

javascript - D3js - 将垂直条形图更改为水平条形图

php - 如何连接多个 MySQL 查询

javascript - 当页面被 history.pushState 和 ajax 调用更改时插入内容脚本

java - 通过 ajax/collapsible ListView 刷新 wicket 容器