使用 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) 使用另一个 中的值 的相关文章

  • CSS 列不会水平对齐

    我正在使用列计数来允许我的文本流入两个不同的列 但第一列的顶部 最左边 低于另一列 col moz column count 2 webkit column count 2 column count 2 div h3 Options h3
  • Preg_split 用逗号,忽略括号,PHP

    我必须分割一个字符串 并且我想避免用括号内的逗号分割它 那么我该如何实现呢 Example string string1 sString1 sString2 ssString1 ssString2 string2 string3 resul
  • 获取列表框中选定值的列表

    已经有一个问题得到了大量的投票 要求使用 jQuery 从下拉列表中获取选定的值here https stackoverflow com questions 1643227 get selected text from drop down
  • firebase 返回 onSnapshot 承诺

    我正在使用 firebase firestore 并且正在寻找一种返回快照承诺的方法 onlineUsers i want to return onSnapshot return this status database ref where
  • 您可以编写期望抛出异常的异步测试吗?

    我正在编写一个异步测试 期望异步函数像这样抛出 it expects to have failed async gt let getBadResults async gt await failingAsyncTest expect awai
  • 以编程方式添加数字签名外观?

    我正在以编程方式对我的 PDF 文件进行签名 并且我想将签名外观添加到 PDF 我需要哪些对象才能实现此目的 我知道我必须Annotations BBox and XObject但我真的不知道按什么顺序以及是否需要其他东西 调试此类内容以找
  • 在 GeoJson 数据接收到的 Google 地图多边形上放置标签

    我想将带有信息的标签 或带有标签的 div 放在由下面的代码片段绘制的多边形上 样式属性已成功应用于要素 多边形类型 有谁知道如何向该特征添加文本并将其显示在多边形的中心 function handleGeoJson data map da
  • 使用 Laravel Intervention 库缓存动态图像不起作用

    我目前正在使用 Laravel 5 并利用干预图像集成 http image intervention io http image intervention io 我动态地使用它 因此图像具有如下 URL http example org
  • Img src 路径以及要传递的标头参数

    我在 jsp 页面中有一个 img 标记 其中 src 路径需要传递标头参数才能获取图像 我们怎样才能实现它呢 您现在可以使用fetch https developer mozilla org en US docs Web API Fetc
  • PHP 中的舍入

    a 0 1 0 7 10 int 0 1 0 7 10 PHP 返回 false 有人能给我解释一下 为什么会发生这种情况吗 第一个返回 8 第二个返回 7 引用PHP 浮点精度手册中的大红色警告 http de3 php net manu
  • 基于 ajax 的弹出窗口中的 Mathjax + CKEditor 4 + CKEditor

    我已经配置了 CKEditor 4 并且我的页面上有以下内容 我的页面中有一个 CKEditor 设置值的两个选项 这两个选项本身分别选项两个基于 ajax 的弹出窗口 这些基于 ajax 的弹出窗口包含 CKEditor 现在我有以下问题
  • 如何通过引用文档查询嵌入文档?

    我正在使用 Doctrine ODM 但在通过引用文档查询嵌入文档时遇到问题 考虑以下文件
  • 页脚没有停留在底部

    这似乎是有史以来最令人困惑的问题 至少对我来说是这样 知道这个页面 除了标题之外 都已损坏 我复制了 HTML 并尝试小心地删除 WordPress 相关的爵士乐 以便您获得该页面的 html JsBin直播页面 http jsbin co
  • jquery load() 去除脚本标签 - 解决方法?

    有谁知道 jquery load 的解决方法 去掉从外部内容加载的脚本标签 有很多文档证明这种情况发生 但在网上搜索了大约 4 个小时后我找不到解决方法 我正在加载动态生成的 div 类似于搜索结果页面 并且需要将 click 绑定到每个动
  • Elasticsearch 如何使用通配符进行 OR 查询

    我很难尝试使用 elasticsearch 构建查询 我想查询类似的内容 WHERE field 1 is match string OR field 2 is wildcard match string OR field 3 is fuz
  • 根据唯一测试提取站点地图 URL 和 cy.request() 每个 URL (Cypress) [重复]

    这个问题在这里已经有答案了 将 Cypress 与 TypeScript 结合使用 我的代码目标是提取 sitemap xml 中的所有 URL 和 cy request 每个 URL 的状态 200 这个版本的工作原理 describe
  • 手动渲染 Twig 字符串时禁用 HTML 转义

    我有以下代码将字符串呈现为 HTML 输出 如何阻止它转义 HTML 文本 template who bar params array who gt Foo s twig new Twig Environment new Twig Load
  • 使用 Ajax 和 PHP 上传图像

    我想将图像上传到我的服务器 并控制 HTML 代码中的 PHP 回显 为此 我想使用 jQuery Ajax 但我不知道如何使用 Ajax 将图像发送到 PHP 这是一个大学项目 所以我不能使用任何类型的插件 我的实际代码 HTML
  • 以零开头的字符串/数字的正确格式?

    我正在尝试使用 PHP 创建一个包含电话号码列表的文件 它工作正常 但如果电话号码以零开头 则该数字将从 Excel 文件中删除 有谁知道如何正确设置格式以使其保持不变 Either Set the value explicitly as
  • 是否可以使用 fs.createWriteStream 在文件中间写入文本? (或者一般在 Node.js 中)

    我正在尝试写入文本文件 但不是像appendFile 那样在最后写入或通过替换整个内容 我看到可以选择从 fs createwritestream 的启动参数开始的位置 gt https nodejs org api fs html fs

随机推荐

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

    我在 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 填充的 现在我想要的是 当选择某个专业时 包含医生的选择会改变 这是代码