栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Ajax填充选择框

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Ajax填充选择框

在页面上呈现选择之前,将分配客户选择的更改事件。将事件处理程序移至document.ready:

<script type="text/javascript" charset="utf-8">$(document).ready(function(){    $('#customer').on('change', function (){        $.getJSON('select.php', {customerId: $(this).val()}, function(data){ var options = ''; for (var x = 0; x < data.length; x++) {     options += '<option value="' + data[x]['id'] + '">' + data[x]['reg'] + '</option>'; } $('#vehicle').html(options);        });    });});</script>

我也改为

$$('#customer')
$('#customer')
。最后,修复您的SQL注入漏洞:

$sql = 'SELECT * FROM vehicles WHERe customerID = ' . (int)$id;

在此处将ID强制转换为int会阻止SQLi,但是您应该考虑使用Prepared
Statement

您在问题中提到的错误看起来与您的代码无关。它看起来与Chrome扩展程序有关。


这不是问题的一部分,但这是构建车辆选项的代码的改进版本:

$.getJSON('select.php', {customerId: $(this).val()}, function(data){    var vehicle = $('#vehicle');    for (var x = 0; x < data.length; x++) {        vehicle.append(new Option(data[x].reg, data[x].id));    }});

改进之处包括:

  • 将选择存储在变量中,这样我们就不必在循环的每次迭代中都继续查询DOM
  • 使用
    new Option(...)
    .append()
    创建选项并将其添加到车辆选择中。像这样构建元素比创建原始HTML更好,因为这样一来,您不必担心诸如
    <
    >
    数据之类的字符-这会破坏当前代码的HTML。
  • 您的数据被解码为Javascript对象数组,因此,首选使用对象符号(
    data[x].id
    )而不是
    data[x]['id']


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号