使用 jQuery 和 Ajax 自动填充选择框 - 不适用于 1.3.2 之后的任何版本

2023-12-15

我已经阅读了有关使用 jQuery 和 Ajax 自动填充框的教程:http://remysharp.com/2007/01/20/auto-populate-select-boxes-using-jquery-ajax/

在演示中,作者运行的是 jQuery 版本 1.2.3。在本地,我设法让该函数在 jQuery 1.3.2 上运行。但在该版本之上的任何版本上运行它都不起作用(第二个框未填充)。

这是 jQuery 代码:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" charset="utf-8">
$(function(){
  $("select#ctlJob").change(function(){
    $.getJSON("/select.php",{id: $(this).val(), ajax: 'true'}, function(j){
      var options = '';
      for (var i = 0; i < j.length; i++) {
        options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
      }
      $("select#ctlPerson").html(options);
    })
  })
})
</script>

这是 HTML 代码:

<form action="/select_demo.php">
  <label for="ctlJob">Job Function:</label>
  <select name="id" id="ctlJob">
    <option value="1">Managers</option>
    <option value="2">Team Leaders</option>
    <option value="3">Developers</option>
  </select>
  <noscript>
    <input type="submit" name="action" value="Load Individuals" />
  </noscript>
  <label for="ctlPerson">Individual:</label>
  <select name="person_id" id="ctlPerson">
    <option value="1">Mark P</option>
    <option value="2">Andy Y</option>
    <option value="3">Richard B</option>
  </select>
<input type="submit" name="action" value="Book" />
</form>

这是服务器端 PHP:

<?php
if ($_GET['id'] == 1) {
  echo <<<HERE_DOC
[ {optionValue: 0, optionDisplay: 'Mark'}, {optionValue:1, optionDisplay: 'Andy'}, {optionValue:2, optionDisplay: 'Richard'}]
HERE_DOC;
} else if ($_GET['id'] == 2) {
  echo <<<HERE_DOC
[{optionValue:10, optionDisplay: 'Remy'}, {optionValue:11, optionDisplay: 'Arif'}, {optionValue:12, optionDisplay: 'JC'}]
HERE_DOC;
} else if ($_GET['id'] == 3) {
  echo <<<HERE_DOC
[{optionValue:20, optionDisplay: 'Aidan'}, {optionValue:21, optionDisplay:'Russell'}]
HERE_DOC;
}?>

如何重写此函数以便它可以与 jQuery 1.5 等程序一起使用?

谢谢您的帮助!

编辑:马克的解决方案有效,这是包含所有内容的 HTML 文件,并且应该相对容易调整它以读取保存的 json 文件。

<html>
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
        <title>Select test</title>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
                 $(function(){
                    var data = [
                                [
                                    {optionValue: 0,optionDisplay: 'Mark'},
                                    {optionValue: 1,optionDisplay: 'Andy'},
                                    {optionValue: 2,optionDisplay: 'Richard'}
                                    ],
                                [
                                    {optionValue: 10,optionDisplay: 'Remy'},
                                    {optionValue: 11,optionDisplay: 'Arif'},
                                    {optionValue: 12, optionDisplay: 'JC'}
                               ],
                                [
                                    {optionValue: 20,optionDisplay: 'Aidan'},
                                    {optionValue: 21,optionDisplay: 'Russell'}
                                   ]
                               ];


                    $("#ctlJob").change(function() {
                        var $persons = $("#ctlPerson").empty();
                        $.each(data[$(this).val() - 1], function() {
                            $persons.append("<option value=" + this.optionValue + ">" + this.optionDisplay + "</option>");
                        });
                    });
                })    
                </script>
    </head>

    <body>
            <form action="/select_demo.php">
                <label for="ctlJob">Job Function:</label>
                <select name="id" id="ctlJob">
                    <option value="1">Managers</option>
                    <option value="2">Team Leaders</option>
                    <option value="3">Developers</option>
                </select>
                <noscript>
                    <input type="submit" name="action" value="Load Individuals" />
                </noscript>
                <label for="ctlPerson">Individual:</label>
                <select name="person_id" id="ctlPerson">
                    <option value="1">Mark P</option>
                    <option value="2">Andy Y</option>
                    <option value="3">Richard B</option>
                </select>
                <input type="submit" name="action" value="Book" />
            </form>
    </body>
</html>

假设您的 json 有效,您应该能够使用以下内容:

 $("select#ctlJob").change(function(){
    $.getJSON("/select.php",{id: $(this).val(), ajax: 'true'}, function(data){
      var $persons = $("#ctlPerson").empty();
      $.each(data, function() {
        $persons.append("<option value=" + this.optionValue + ">" + this.optionDisplay + "</option>");
      });
    })
  });

更新为在问题中使用您的标记jsfiddle.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jQuery 和 Ajax 自动填充选择框 - 不适用于 1.3.2 之后的任何版本 的相关文章

  • Modernizr - 加载 polyfills / 使用自定义检测的正确方法

    我想在网页上使用一些新的 HTML5 表单属性和输入类型 有些浏览器已经支持它们 有些浏览器不支持 也永远不会支持 这就是我想使用 Modernizr 的原因 这就是我的麻烦开始的原因 据我了解 Modernizr 本身并不是一个 poly
  • 通过标识引用对象的标准方法(例如循环引用)?

    JSON 中是否有通过身份引用对象的标准方法 例如 具有大量 可能是循环 引用的图形和其他数据结构可以被合理地序列化 加载吗 Edit 我知道做一次性解决方案很容易 列出图中所有节点的列表 然后 我想知道是否有一个标准的 通用的解决方案来解
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • PHP print_r() 中 _r 的含义是什么?

    我见过这个答案 https stackoverflow com questions 13103410 what does r suffix mean就这样 但我不确定它对于 PHP 是否相同 如果是 可重入的含义是什么 From PHP n
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • 使用 json_encode() 函数在 PHP 数组中生成 JSON 键值对

    我正在尝试以特定语法获取 JSON 输出 这是我的代码 ss array 1 jpg 2 jpg dates array eu gt 59 99 us gt 39 99 array1 array name gt game1 publishe
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 如何在 phalcon 框架中同时连接多个数据库在模型类中同时使用两个而不仅仅是一个

    在我的代码中我有两个数据库ABC and XYZ 我想在同一模型中使用两个数据库 而不是 phalcon 中的解决方案是什么 如何为此实现多个数据库连接 one
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 我可以停止 :hover 应用于元素吗?

    假设我有一些 CSS button hover font weight bold 我怎样才能防止 hover随意应用样式 我的目标用例是当元素被禁用时 例如 使用这个 HTML
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 显示覆盖以覆盖整个页面

    我有一个正在加载的网络应用程序iframe 我需要显示一个覆盖 div 来覆盖整个页面 问题是叠加层当前仅显示在iframe区域而不覆盖整个页面 我们的应用程序 子应用程序 是加载的一组应用程序的一部分iframe 你可以做这样的事情 di
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 如何使用 php 将 *.xlsb 转换为数组或 *.csv

    我正在尝试转换 xlsb文件到php array or csv文件 或至少 xls 我尝试使用PHPExcel 但看起来它无法识别该文件中的内容 我注意到 你可以重命名 xlsb文件到 zip文件 然后使用命令行解压缩unzip zip 之

随机推荐

  • ExtJS 4.0.7 scrollTo() 滚动但不移动滚动条滑块?

    我有一个树面板 正在尝试对某些位置进行动画滚动 我正在做这样的事情 myTreePanel getView getEl scrollTo top yCoord true animate 视图滚动到正确的位置 但滚动条中的 滑块 没有移动 有
  • 如何选择包含按钮的 QTableWidget 单元格

    我有一个关于 PyQt4 上的 QTableWidget 的问题 假设我有一个 QTableWidget 我想使用以下方法将事件连接到单元格单击 table cellClicked connect cellClick then 单元格点击函
  • Angular - 自定义元素不适用于 Firefox、Microsoft Edge 和 Internet Explorer

    我试过这个角度元素演示 我在本地下载 安装并构建了该演示 然后 使用以下代码
  • C 中的命名空间

    有没有办法 滥用 使用C预处理器来模拟命名空间C 我正在思考以下几点 define NAMESPACE name of ns some function some other function 这将被翻译为 name of ns some
  • 302s 和 urllib2 丢失 cookie

    我将 liburl2 与 Cookie Jar HTTP CookieProcessor 一起使用 试图模拟登录页面以自动上传 我已经看到了一些关于此的问题和答案 但没有解决我的问题 当我模拟以 302 重定向结束的登录时 我丢失了 coo
  • Inno Setup 中 AppData\LocalLow 的常量?

    目前可访问LocalLow我用这个 USERPROFILE AppData LocalLow 但我想知道 Inno Setup 中是否有一个常数 因为两者Roaming and Local有一个 没有常数AppData LocalLow 您
  • 动态调整导航 div 的大小以适应主要内容

    问候和你好我正在尝试构建一个 WordPress 网站 现在因为主 div 中的内容将具有不同的高度 每个页面我需要导航侧边栏拉伸到相同的高度 因此 通过一些 JavaScript tom foolery 我可以使用以下代码使侧边栏具有相同
  • 限制可以输入“文本区域”的文本量的最佳方法是什么?

    限制用户可以在网页上的 文本区域 字段中输入的文本量的最佳方法是什么 所讨论的应用程序是 ASP NET 但首选与平台无关的答案 我知道可能需要一定量的 JavaScript 才能完成此操作 因为如果可能的话 我不希望使用大量数据实际执行
  • SQL Server 左连接

    我正在尝试在一个查询中进行左连接 但似乎我在某个地方错了 table machines machineID FaNo Barcode RoutingCode Name table log logID lineBarcode machineB
  • 如何使用 WiX 创建事件日志源

    我正在为使用自定义事件日志源的网站创建安装程序 我希望基于 WiX 的安装程序在安装过程中创建该事件日志源 有谁知道使用 WiX 框架执行此操作的最佳方法 Wix 对创建事件日志源提供开箱即用的支持 假设您使用 Wix 3 您首先需要将对
  • 我应该使用什么 Java 库来进行图像裁剪/信箱处理? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一个 Java 库来进行图像裁剪 调整大小 我本来计划使用jmagick 但自2009年以来它似乎就没有维护了 这是最好用的库吗 有什么建
  • 在 php 中声明变量的正确方法是什么?

    我在 php 文件中使用变量而没有声明它们 它在旧版本的 localhost 即 vertrigoServ 2 22 中运行完美 但是当我迁移到最新版本的 localhost 即 xampp 3 2 1 时 我遇到了变量声明警告和错误 如下
  • 为什么我无法在 IE8 (javascript) 上扩展 localStorage?

    我想向 localStorage 添加 2 个方法 我的目标是最终得到这样的结果 localStorage setObject key object localStorage getObject key 此解决方案适用于大多数浏览器 但不适
  • 如何在R中使用ggplot2找到两个密度的交集

    如何找到使用以下命令创建的两个密度图的交集ggplot2 来自名为的数据框的样本combined futureChange direction 2009 10 26 0 9980446 long 2008 04 28 1 0277389 n
  • Twitter oAuth callbackUrl - 本地主机开发

    其他人是否在获取 Twitter oAuth 回调 URL 来访问其本地主机开发环境时遇到困难 显然它最近被禁用了 http code google com p twitter api issues detail id 534 c1 有没有
  • 在 WPF TreeView 中单击事件时获取选定子节点的值

    我在 WPF 中有一个 TreeView 其中包含一个主节点和 5 个子节点 一旦主节点展开 我们就会得到子节点 现在在展开子节点时 我们会得到一些值 这是我在 WPF 中的 treeView 的表示 在此我想获取已扩展的 5 个子节点之一
  • 如何从 Kendo 网格中删除一行

    我有一个非常简单的设置 一个名为 list 的网格 其中的数据源填充了要显示的记录 我在每一行都有一个按钮 其中有一个调用此函数的 onClick 事件 Soft Delete person var processURL crudServi
  • 将 PeerJs 导入 NextJs [重复]

    这个问题在这里已经有答案了 所以我正在学习 NextJs 并尝试构建一个音频聊天应用程序 当我尝试导入时我陷入困境PeerJs 它抛出一个窗口未定义错误 import Peer from peerjs export default func
  • 如何从HTTP状态码获取HTTP状态文本? [复制]

    这个问题在这里已经有答案了 是否有任何标准函数 或在curl Guzzle 中 可以从HTTP 状态代码号获取HTTP 状态文本 描述 getHttpStatusText 404 Not Found 我知道我可以创建一个像这样的地图 404
  • 使用 jQuery 和 Ajax 自动填充选择框 - 不适用于 1.3.2 之后的任何版本

    我已经阅读了有关使用 jQuery 和 Ajax 自动填充框的教程 http remysharp com 2007 01 20 auto populate select boxes using jquery ajax 在演示中 作者运行的是