当前位置: 首页 > 面试题库 >

使用JQUERY,AJAX和PHP填充选择框

弘浩瀚
2023-03-14
问题内容

我较早前发布了一个问题,但运气不太好,我希望清除第二个下拉列表的内容并重新填充该下拉列表,具体取决于第一个下拉列表中的值。

我有以下选择框,如下所示:

   <select name = "car" id="Cars" onchange="myFunction(this)">
            <option value="0">Toyota</option>
            <option value="1">Audi</option>
            <option value="2">Suzuki</option>
   </select>

在此下拉菜单下,我还为模型添加了另一个下拉菜单:

    <select id="emptyDropdown">
            <option value="0">R8</option>
            <option value="1">Quattro</option>
            <option value="2">A6 hatchback</option>
    </select>

onchange我想清除第二个下拉列表,并在其中填充与汽车品牌相关的模型。例如。

Audi - A8, A6, A4 etc.
Suzuki - Swift, Panda etc.


<script>
  function myFunction(obj)
  {
    $('#emptyDropdown').empty()
    var dropDown = document.getElementById("carId");
    var carId = dropDown.options[dropDown.selectedIndex].value;
    $.ajax({
            type: "POST",
            url: "/project/main/getcars",
            data: { 'carId': carId  },
            success: function(msg){
                ?????????
            }
        });
  }
</script>

然后,我具有如下所示的PHP函数(我正在使用codeigniter)-该函数使用Car ID并返回所有模型的列表,如下所示:

public function getCars(){
        $this->load->model('car_model');

        $this->form_validation->set_rules('carId', 'carId', 'trim|xss_clean');

        if($this->form_validation->run()){
            $carId = $this->input->post('carId');
            $carModels = $this->user_management_model->getCarModels($carId);
        } else {
            echo "error";
        }   
}

然后,我不知道如何返回用PHP生成的数组中的每个元素,以ID =“ emptyDropdown”重新填充下拉列表。用PHP生成的数组具有以下结构:

Array ( [0] => Array ( [ModelName] => R8 V6 Twin Turbo [ModelID] => 19 ) [1] => Array ( [ModelName] => A6 Hatchback  [ModelID] => 107 ) )

为了澄清这个问题-
我将如何获取数组中的每个元素并将其作为下拉列表中的新选项?有没有办法将数组返回到javscript,然后在ajax调用的成功方法中重新填充?

任何帮助将不胜感激,在此先感谢


问题答案:

该答案提供了对代码的必要修改。

免责声明:在未
看到确切安装的情况下,请注意,可能有多种因素导致此安装无法按原样运行。我不知道您的路由是如何设置的,或者您是否正在使用Firebug或其他控制台监视ajax调用,但是这应该为您提供了构建基块:

首先,更改您的php以将数组 输出 为json编码的字符串:

public function getCars(){
        $this->load->model('car_model');

        $this->form_validation->set_rules('carId', 'carId', 'trim|xss_clean');

        if($this->form_validation->run()){
            $carId = $this->input->post('carId');
            $carModels = $this->user_management_model->getCarModels($carId);
            // Add below to output the json for your javascript to pick up.
            echo json_encode($carModels);
            // a die here helps ensure a clean ajax call
            die();
        } else {
            echo "error";
        }   
}

然后,修改您的脚本ajax调用,以获取获取数据并将其添加到下拉列表的成功回调:

function myFunction(obj)
  {
    $('#emptyDropdown').empty()
    var dropDown = document.getElementById("carId");
    var carId = dropDown.options[dropDown.selectedIndex].value;
    $.ajax({
            type: "POST",
            url: "/project/main/getcars",
            data: { 'carId': carId  },
            success: function(data){
                // Parse the returned json data
                var opts = $.parseJSON(data);
                // Use jQuery's each to iterate over the opts value
                $.each(opts, function(i, d) {
                    // You will need to alter the below to get the right values from your json object.  Guessing that d.id / d.modelName are columns in your carModels data
                    $('#emptyDropdown').append('<option value="' + d.ModelID + '">' + d.ModelName + '</option>');
                });
            }
        });
  }

再次-这些是基本要素。使用浏览器控制台或诸如Firebug之类的工具监视AJAX请求和返回的数据,以便您可以进行适当的修改。祝好运!



 类似资料:
  • 问题内容: 好的,这是我对Ajax的第一次尝试,它使我发疯,因为我实在无法绕开它。我想做的是在第一个框中用数据库中的客户填充,然后使用customerID通过select.php脚本从数据库中选择所有车辆ID。发生的情况是“客户”框被选中,但是选择客户时什么也没有发生。 这是我的Test.php文件: 这是我的select.php文件: 我正在尝试修改本教程以使用数据库,但到目前为止我没有成功。

  • 问题内容: 我希望用户能够单击表,并根据他们单击的行-它会用与该行相关的内容(MYSQL查询)填充模式,并打开模式。 我尝试执行以下操作:-加载表内容-使用jQuery单击表时-使用AJAX通过单击的行信息发布到PHP文件-使用行信息执行MYSQL查询- 填充具有收集的内容的模态-打开模态 我遇到的问题是,因为这是一条MYSQL语句,并且该函数是非阻塞的,所以在模式开始打开时尚未声明变量。Web编

  • 问题内容: 我仍在学习Jquery,并且对自己手中的任务有些困惑。 看起来像一个简单的任务…我有一个框,想要在单击时填充“选项”。我不希望仅在有人真正要求查看列表时在页面加载时填充它。同样,它只需填充一次。我真的不希望有人每次扩大名单时都发出请求。 我想我的Select元素中可能会有一个函数调用 然后让一个Javascript getUsers()函数调用我的Json GetUsers()Acti

  • 问题内容: 我有一个选择字段。我必须填写从mysql表中获取的选项。 这是我使用codeigniter框架完成的一些php代码 现在,jQuery调用… 该代码工作正常。当我给帖子打电话时,得到的结果是categoryid。 现在,我应该修改上面的代码,以便可以执行以下操作: 发布ajax调用,发送类别ID。这个做完了 获取该类别的子类别,并构建数组* json_encode数组并回显* 通过jQ

  • 问题内容: 就像标题中所说的那样,尽管我对尚未付诸实践的理论很熟悉,但我仍在尝试使用jQuery,JSON和AJAX创建下拉菜单,因此,任何建议,演示代码段或教程都将不胜感激,因为我想开始最好的开始! 提前感谢! 问题答案: 您需要执行$ .getJSON调用以从document.load或其他一些事件http://api.jquery.com/jQuery.getJSON/上的服务器中获取jso

  • 问题内容: 我正在用getJSON填充选择菜单。我想知道是否有一种方法可以使用jQuery的.each函数引入这些值? 当然,必须有一种更简单的方法来完成此操作……也许吗? PHP文件: jQuery: 我的json输出看起来像这样: 问题答案: 使用@RaYell的方法....这对我有用: 感谢大家在此方面的帮助!