Ajax脚本在MySQL填充下拉框时无法获取PHP返回结果求助
我帮你排查出几个关键问题,这些问题正是导致Ajax无法正常工作的根源:
问题1:SQL查询缺失必要字段
你当前的查询语句只选取了name字段,但代码里试图获取$row["company_id"],这会触发Undefined index错误。错误信息会直接输出到页面中,破坏HTML结构,导致jQuery无法正确绑定下拉框的change事件。
问题2:PHP语法错误
主文件里的这句代码存在引号未闭合的问题:
echo '<option value=""></option>;'
末尾的单引号没闭合会导致PHP解析失败,同样会破坏页面的HTML结构。
问题3:错误处理函数混用
你用mysqli_query()执行查询,但错误提示用了mysql_error()——这两个属于不同的数据库扩展,应该换成mysqli_error($connection)才能正确输出mysqli的错误信息。
修复后的代码示例
主PHP文件的下拉框部分
</div> <p>Company <span>*</span></p> <span class="icon-case"><i class="fa fa-comments-o"></i></span> <select name="company" id="company"> <?php // 修复引号闭合问题 echo '<option value=""></option>'; // 修复SQL查询,添加company_id字段 $query="SELECT `company_id`, `name` FROM `companies` ORDER BY `name` ASC"; $result=mysqli_query($connection,$query) or die ("Query to get data from sector table failed: ".mysqli_error($connection)); while ($row=mysqli_fetch_array($result)) { $company_id=$row["company_id"]; $company_name=$row["name"]; echo "<option value=\"$company_id\"> $company_name </option>"; } ?> </select> </div> </div> <div id="show">
优化后的get-data.php(添加容错处理)
<?php // 避免未传参时出现Undefined index错误 $output = isset($_POST['company']) ? $_POST['company'] : ''; echo $output; ?>
额外建议
开发环境下可以开启PHP错误显示,方便快速排查这类语法或变量错误:
// 在PHP文件最顶部添加 error_reporting(E_ALL); ini_set('display_errors', 1);
修复这些问题后,页面的HTML结构会恢复正常,jQuery就能正确监听下拉框的选择事件,Ajax请求也能正常工作了。
内容的提问来源于stack exchange,提问作者Tommaso Lazzari
相关产品推荐
相关产品推荐

