codeigniter - dependent dropdown with jquery and ajax post(codeigniter - 依赖于 jquery 和 ajax post 的下拉列表)
问题描述
视图:learning_view.php
view : learning_view.php
这是我从数据库中填充的第一个下拉列表.
Here is the first dropdown which I am populating from database.
<select name = 'category' id = 'category'>
<option value="">-- Select Category --</option>
<?php foreach($category as $item){ ?>
<option value="<?php echo $item->id_cat; ?>"><?php echo $item->name; ?></option>
<?php } ?>
</select>
<br><br>
我想要的是填充另一个依赖于第一个下拉列表的下拉列表.为此,我使用了 jQuery ajax 帖子.
What I want is to populate another dropdown which is dependent on the first dropdown. For that I have used the jQuery ajax post.
第二个下拉列表:
<select name = 'type' id = 'type'>
<option value="">-- Select Type --</option>
<?php foreach($type as $item){ ?>
<option value="<?php echo $item->id_type; ?>"><?php echo $item->name; ?></option>
<?php } ?>
</select>
<br><br>
ajax 帖子:
jQuery(document).ready(function(){
$("#category").change(function() {
var category_id = {"category_id" : $('#category').val()};
console.log(category_id);
$.ajax({
type: "POST",
data: category_id,
url: "<?= base_url() ?>learning/dependent_dropdown",
success: function(data){
$.each(data, function(i, data){
console.log(data.name);
console.log(data.id_type)
});
}
});
});
});
控制器:learning.php
controller : learning.php
public function dependent_dropdown()
{
if(isset($_POST['category_id']))
{
$this->output
->set_content_type("application/json")
->set_output(json_encode($this->learning_model->getType($_POST['category_id'])));
}
}
数据来自我检查过的ajax帖子后的数据库
The data is coming from the database after ajax post which I checked by
console.log(data.name);
console.log(data.id_type)
在控制台中.
但无法弄清楚如何使用我视图的第二个下拉列表中的数据.
But couldn't able to figure out how to use the data in the second dropdown of my view.
我的意思是如何使用我在 ajax 发布后收到的数据填充第二个下拉列表.
I mean how can i populate the second dropdown with the data i have received after ajax post.
推荐答案
我通过修改ajax帖子的success函数找到了解决我的问题的方法:
I found a solution to my problem by modifying the success function of the ajax post:
success: function(data) {
$.each(data, function(i, data) {
$('#type').append("<option value='" + data.id_type + "'>" + data.name + "</option>");
});
}
将值附加到下拉列表中.
Which append the value into the drop down.
<select name="type" id="type">
<option value="">-- Select Type --</option>
</select>
我只是在ajax帖子的success函数中给了select块的id,并附加了值.它可以工作,但有一个问题,即当我更改第一个下拉菜单的选择时会出现新值,但为上一个选择显示的值并没有消失.
I just gave the id of the select block into the success function of the ajax post and appended the value. It works but there is a problem which is when I change the selection of the first dropdown new value appears but the values which were showing for the previous selection doesn't go away.
这篇关于codeigniter - 依赖于 jquery 和 ajax post 的下拉列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:codeigniter - 依赖于 jquery 和 ajax post 的下拉列表
基础教程推荐
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- HTTP 与 FTP 上传 2021-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 使用 PDO 转义列名 2021-01-01