使用 AJAX (PHP) 使用另一个 中的值

2024-01-03

我正在尝试使用另一个选择来更改一个选择的值

正如您所看到的,两个选择都是使用 PHP 填充的。

现在我想要的是,当选择某个专业时,包含医生的选择会改变。

这是代码

            <select id="specialties" class = "formulario_text">
                <?php foreach ($specialties as $especialidade_id => $especialidade) { ?>
                    <option value="<?php echo $especialidade_id; ?>"><?php echo $especialidade; ?></option>
                    <?php
                }
                ?>
            </select>
            <br>
            <br>
            <label>
                <b class="formulario_labels2">Médico:*</b>
            </label>
            <br>
            <select id="medics" class="formulario_text">
                <?php foreach ($medics as $id => $nome) { ?>
                    <option value="<?php echo $id; ?>"><?php echo $nome; ?></option>
                    <?php
                }
                ?>
            </select>

我对 AJAX、PHP 和 Javascript 知之甚少,所以我在这里几乎碰壁了。希望有人能帮助我。

提前致谢

到目前为止我有这个

    $(document).ready(function() {


        $("#specialties").change(function() {
            var val = $(this).val();
            if (val == "16") {
                $("#medics").html("<option value='1'> <?php $medics[1]; ?> </option>");
            } 
        });

    });

我正在测试是否可以捕获另一个文件中 $medics 数组的第一个位置。

$specialties = model\ClinicalSpecialty::getSpecialties();

$medics = model\Medic::getMedics();

这些方法是这样工作的

static function getSpecialties(){

    $res = array();
    $db = new DBAccess();

    if($db->conn){
        $query = 'select id,name from clinical_specialty';
        $result_set = $db->conn->query($query);
        while ($row = $result_set->fetch_assoc()) {
            $res[$row['id']] = $row['name'];
        }
        $result_set->free();
        $db->conn->close();
    }
    return $res;
}

抱歉一开始没有添加此代码


你最好将其分成步骤,这是(我认为)理解它的最简单的方法。

我不确定如何将其包含在您的 PHP 中,因为我对您的代码的其余部分一无所知。我会给你一个静态的例子,你必须自己将它与 PHP 结合起来。我希望它无论如何都会有帮助!

第一步:引入jquery.

您必须在 html 之间包含 jQuery 库<head>像这样的标签: (如果您已经包含 jQuery,请跳过此步骤)

<!--including jQuery here -->
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>

第 2 步:使用 JavaScript 工作。您首先必须触发 onload 回调,以便您的函数知道何时关闭,如下所示:

<script>
//When page is done loading
$(document).ready(function(){
});
</script>

第三步:大脚本

//When page is done loading
$(document).ready(function() {
// let's get your select first!
    var firstSelector = $('#yourSelectID');
    var medicSelector = $('#yourMedicSelectID');
    //we will fill this variable on select changes
    var currentSelection = firstSelector.val();
    //set initial medic values
    medicSelector.html(
    "your options here as strings (between the quotes). see below for example"

);


    //get value on change
    firstSelector.change(function() {
        currentSelection = $(this).val();

        //check if the current value is what you want
        if (currentSelection == "1") {
            //This replaces the options completely
            medicSelector.html(
                    //you can use any PHP variable here to fill it. 
                    //Just use <?php echo $optionsforthischoice ?>
                    // $optionsforthischoice would be filled like so:
                    //  $optionsforthischoice = "<option>option1</option><option>option2</option> etc.;
                    "<option>option1</option><option>option2</option><option>option3</option>"
                    );
        }
        if (currentSelection == "2") {
            // do the same here as for 1, but when 2 is selected!
        }

    });
});

重要的提示: 正如您所看到的,这种风格非常静态。如果您想要一个更动态的解决方案,您将为我们提供更好的信息和更多代码。

此 Javascript 替换了您之前的选项,因此您必须为每个 if 语句重写它们。他们不做加法或减法。他们完全取代了。

!EDIT!

我看到你已经编辑了你的问题。现在我可以适当地提供帮助。我将上面的“教程”留下来供参考。 (顺便说一句,您也可以使用 php foreach 循环将完整数组放入您的 JavaScript 中)

见下文

如果您想正确执行此操作,您可能需要连接数据库中的点,并使用 sql 连接。它会为您节省大量代码并使整个事情变得更容易。但是,由于您可能还没有这样做,因此只有一种正确的方法可以解决此问题。 您会发现,您不能在特定功能上使用 ajax。你必须制作一个 php 脚本。

例如,您将制作“getMedics.php”。

然后,当选择更改时,您将使用 ajax 调用“getMedics.php”文件,如下所示:

//The first option is the link to the file
//The ?specialty is a parameter which you are going to get in the script.
//This will be the selection that was made before
//Within the function "result" will be the variable with the values the phpscript returns
$.get('phpscripts/getMedics.php?specialty=' + $("#specialties").val(), function(result) {
//if the result returned anything
    if (result.trim()) {
        //you will want the result to be the options
        $('#medics').html(result);
    }
});

现在 php 脚本会变得更加棘手。这是关于它的外观:

//get the specialty ID
$specialty = strip_tags($_GET['specialty']);
//get the medics
//i'm guessing the results will be arrays within arrays
$medics = Medic::getMedics();
//set the array for the options
$options = array();
//prepare our results
$optionResults = "";

switch ($specialty) {
    case 0:
        $options[1] = "1";
        $options[2] = "2";
        $options[3] = "5";
        $options[4] = "7";
        break;
    case 1:
        $options[1] = "1";
        $options[2] = "2";
        $options[3] = "5";
        $options[4] = "7";
        break;
    case 2:
        echo "specialty equals 2";
        break;
}

//this foreach loop will pass the options to a variable
foreach($option as $options){
    //.= adds to the variable
    $optionResults .= "<option value='".$medics[$option][0]."'>".$medics[$option][1]."</option>";
}

//this is what will return as the ajaxed results:

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

使用 AJAX (PHP) 使用另一个 中的值 的相关文章

  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 我可以使用 jQuery 打开下拉列表吗

    对于 HTML 中的下拉列表
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比
  • 为什么 Composer 降级了我的包?

    php composer phar update这样做了 删除了 2 3 0 软件包并安装了整个 2 2 5 Zend Framework php composer phar update Loading composer reposito
  • Schema.org 的常见问题解答页面

    我有一个常见问题解答页面 我想用更好的 html 架构来实现它
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val
  • Javascript/Jquery:确定用户是否使用鼠标滚轮、滚动条或键盘滚动

    我正在尝试让用户界面正常工作 如果他们使用鼠标滚轮 我需要让它以一种方式滚动 如果他们使用滚动条 我需要让它以另一种方式滚动 如果他们使用键盘 我需要让它以另一种方式滚动 我相信滚轮和滚动条都充当鼠标事件 但是当单击滚动条时我无法让 jav
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win
  • jQuery 对象相等

    如何确定两个 jQuery 对象是否相等 我希望能够在数组中搜索特定的 jQuery 对象 inArray jqobj my array 1 alert deviceTypeRoot deviceTypeRoot False alert d
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a
  • fullCalendar 未显示正确的结束日期

    我正在看调试页面 http jsbin com wukofacaxu edit js outputFullCalendar 官方网站的 我想安排一个活动时间为 22 09 2015 至 30 09 2015 dd mm yyyy 但它只显示

随机推荐

  • 忽略“检测到源架构漂移”错误,继续更新

    我在 Visual Studio 2017 中有一个 SQL 项目 我正在使用 SSDT 从 SQL 数据库更新我的项目 如下所示 通常 我用作源的数据库正在发生变化 通常以小且不相关的方式 当发生这种情况时 我无法更新我的项目 我得到 c
  • 如何在 Laravel 5 中删除会话

    我正在尝试删除基本会话 但它没有删除 这是代码 欢迎 blade php if Session has key Session get key a href logout Sign Out a else please signin endi
  • 如何使用streamreader以当前编码读取byte[]

    我想读byte 使用 C 和文件的当前编码 正如 MSDN 中所写 当构造函数没有编码时 默认编码将为 UTF 8 var reader new StreamReader new MemoryStream data 我也尝试过 但仍然以 U
  • mysql_insert_id() 返回 0

    我知道有很多主题具有相同的标题 但主要是查询插入到了错误的位置 但我认为我的定位是正确的 所以问题是 即使数据插入到数据库中 我仍然得到 0 有人知道我可能错的答案吗 这是我的代码 mysql query SET NAMES utf8 th
  • 如何在 Visual Studio Team Services 中的托管代理上查找 Android SDK 的位置?

    我想在 VSTS 中的托管构建代理上构建我的 android 项目 因此 我创建了一个 Android 构建定义 将其在 托管 Linux 预览 代理上排队 但我的构建失败并出现以下错误 未找到 SDK 位置 使用 sdk dir 定义位置
  • 如何在没有 FlexBuilder 的情况下将 Cairngorm 的 SWC 文件添加到我的应用程序中?

    我没有使用 FlexBuilder 我使用的是免费的 Flex SDKTextMate http macromates com 我有点不明白什么这个FlexBuilder进程 http nwebb co uk blog p 58实际上 在所
  • 如何在 F# 交互中使用断点?

    我已经开始使用 VS2010 和 F 交互式研究算法中的一些想法 所以 我创建了一个DebugScript fsx 我在那里编写了一些代码 并最终将其发送到 F Int 进行测试 有时我需要捕捉一个错误 但即使是简单的我也无法放置断点for
  • 将背景图像叠加到背景颜色上

    我的网站 http www webbuddies co za http www webbuddies co za 工作完美 但是当以 1280x1024 分辨率查看时 页面底部有一点可见的白色 我想去掉它 背景是渐变图像 我只想更改背景颜色
  • 如何将 TextBlock 设置为属性值?

    I used this http www c sharpcorner com uploadfile mahesh user control in wpf 构建自定义控件的教程 现在 我想向用户控件添加一条简单的消息 文本块 来为用户提供一些
  • 禁用 mongo docker 中的默认身份验证

    我想禁用默认身份验证 避免使用 mongo authenticationDatabase auth db 在 mongo 中使用 docker compose 这是我的docker 撰写 file version 2 services mo
  • 为什么增加 Nginx 中的worker_connections 会使应用程序在node.js 集群中变慢?

    我正在将我的应用程序转换为 Node js 集群 我希望它能够提高我的应用程序的性能 目前 我正在将该应用程序部署到 2 个 EC2 t2 medium 实例 我有 Nginx 作为代理和 ELB 这是我的 Express 集群应用程序 从
  • Keras 的 TensorBoard 回调中嵌入不匹配的张量数量

    我使用的是 CIFAR 10 数据集 因此有 10000 张测试图像 我成功创建了一个 tsv包含元数据的文件 10000 行中每一行的测试集标签 以人类可读的文本形式 而不是索引 但是 在 TensorBoard 中 当我打开嵌入选项卡时
  • Qt fitInView 和调整大小

    我正在尝试做一个QGraphicsView宽度与窗口中心的高度相同 我创建了一个普通的QGraphicsView在 Qt Designer 中并设置最小尺寸 添加了一些居中的计算QGraphicsView进入主窗口的中心 并将宽度设置为与高
  • 使用形状或 9 块图像创建聊天气泡

    我正在尝试在我目前正在开发的 Android 应用程序中为我的聊天气泡创建一个模板 最终结果应该是这样的 我尝试使用 形状 但无法获得正确的多个图层 我还尝试了 9 补丁图像 但创建 9 补丁是我所能做到的 我不知道如何使用它 特别是头像
  • 莺:我的影像在哪里

    我正在使用 Jruby 和 Warbler 将 Jruby on Rails 应用程序部署到 Tomcat 服务器 当我使用 Webrick 部署服务器时 我可以看到所有图像 jruby S server script 但是 当我使用 jr
  • 如何使用 runc 列出 docker 容器

    据我所知runc list允许传递容器存储的根目录 但我不知道要为 docker 传递什么根目录 我试过 var lib docker containers但它说容器不存在 我确实有容器出现在docker ps fyi 或者我假设 dock
  • 大量回调的 NodeJS 性能

    我正在开发 NodeJS 应用程序 有一个特定的 RESTful API GET 当用户触发时 它要求服务器执行大约 10 20 个网络操作 以从不同来源提取信息 所有这些网络操作都是异步回调 一旦它们全部完成 结果将由nodejs应用程序
  • 如何在本地访问Docker容器应用程序?

    我有一个简单的 Node js Express 应用程序 const port 3000 app get req res gt res send Hello World app listen port gt console log Exam
  • 自动增加/减少 UITableViewCell 中的 UILabelView 高度?

    你好 我有一个带有 x 个单元格的 UITableView 最后一个单元格我有两个 UILabel 设置第二个 UILabel 文本时 我试图调整单元格和 UILabel 的大小以显示文本 这是我所拥有的 UILabel LabelBio
  • 使用 AJAX (PHP) 使用另一个 中的值

    我正在尝试使用另一个选择来更改一个选择的值 正如您所看到的 两个选择都是使用 PHP 填充的 现在我想要的是 当选择某个专业时 包含医生的选择会改变 这是代码