我较早前发布了一个问题,但运气不太好,我希望清除第二个下拉列表的内容并重新填充该下拉列表,具体取决于第一个下拉列表中的值。
我有以下选择框,如下所示:
<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请求和返回的数据,以便您可以进行适当的修改。祝好运!