jQuery使用jqueryajaxjson、php将项填充到Select中,php,jquery,ajax,json,post,Php,Jquery,Ajax,Json,Post,我有一个选择字段。我必须填写mysql表中的选项。
下面是我使用codeigniter框架完成的一些小php代码
$idcateg = trim($this->input->post('idcategory'));
$array1 = array(
'result' => $idcateg
);
echo json_encode($array1);
现在,jQuery调用
$.post("<?=base_url()?>index.php/rubro/lis
字段*
数组应该由每个元素组成,每个元素都有一个id和名称为的子数组,对吗?
事先非常感谢您的帮助没什么不同
$idcateg = trim($this->input->post('idcategory'));
$result = array();
$id = mysql_real_escape_string($idcateg);
$res = mysql_query("SELECT * FROM subcategories WHERE category = $id");
while ($row = mysql_fetch_array($res)) {
$result[] = array(
'id' => $row['subcatid'],
'desc' => $row['description'],
);
}
echo json_encode($result);
与:
对。您希望传回包含名称/值对的JSON编码的对象数组。然后,您可以使用这些元素以迭代方式创建select
$.post("<?=base_url()?>index.php/rubro/list_ajax/",
{'idcategory' : idc },
function(data){
var select = $('#selectName').empty();
$.each(data.values, function(i,item) {
select.append( '<option value="'
+ item.id
+ '">'
+ item.name
+ '</option>' );
});
}, "json");
您也可以只使用$.load并让PHP代码生成标记
请尝试以下代码
内部控制器-----
public function AjaxTest() {
$rollNumber = $this->input->post('rollNumber');
$query = "";
if($rollNumber !="")
{
$query = $this->welcome_model->get_students();
}
else
{
$query = $this->welcome_model->get_students_informationByRoll($rollNumber);
}
$array = array($query);
header('Content-Type: application/json', true);
echo json_encode($array);
}
在视图中添加一个选择选项
<input type="text" id="txtSearchRoll" name="roll" value="" />
<input type="button" name="btnSubmit" value="Search Students" onclick="return CheckAjaxCall();"/>
<select id="myStudents">
<option>
--Select--
</option>
</select>
现在是脚本--
function CheckAjaxCall()
{
$.ajax({
type:'POST',
url:'<?php echo base_url(); ?>welcome/AjaxTest',
dataType:'json',
data:{rollNumber: $('#txtSearchRoll').val()},
cache:false,
success:function(aData){
$('#myStudents').get(0).options.length = 0;
$('#myStudents').get(0).options[0] = new Option("--Select--", "0");
$.each(aData, function(i,item) {
$('#myStudents').get(0).options[$('#myStudents').get(0).options.length] = new Option(item[i].Name, item[i].roll);
// Display Value
});
},
error:function(){alert("Connection Is Not Available");}
});
return false;
}
享受代码……嗨,克莱特斯。工作得很好。你现在能告诉我如果什么也不退怎么办吗?i、 e.mysql返回空。。如何判断结果是否为空?thanksdata.Length将是0,或者可以是:$.eachdata,functionkey,val{sel.append$.valdata[key].id.textdata[key].desc;,而不是for;;很棒的建议/想法。。。我会试试的!!谢谢斯科特!!请注意,根据我的经验,由于使用innerHTML进行DOM操作时出现错误,此解决方案可能无法在IE8及以下版本上运行,但它在其他浏览器(包括IE9)上运行良好+
public function AjaxTest() {
$rollNumber = $this->input->post('rollNumber');
$query = "";
if($rollNumber !="")
{
$query = $this->welcome_model->get_students();
}
else
{
$query = $this->welcome_model->get_students_informationByRoll($rollNumber);
}
$array = array($query);
header('Content-Type: application/json', true);
echo json_encode($array);
}
<input type="text" id="txtSearchRoll" name="roll" value="" />
<input type="button" name="btnSubmit" value="Search Students" onclick="return CheckAjaxCall();"/>
<select id="myStudents">
<option>
--Select--
</option>
</select>
function CheckAjaxCall()
{
$.ajax({
type:'POST',
url:'<?php echo base_url(); ?>welcome/AjaxTest',
dataType:'json',
data:{rollNumber: $('#txtSearchRoll').val()},
cache:false,
success:function(aData){
$('#myStudents').get(0).options.length = 0;
$('#myStudents').get(0).options[0] = new Option("--Select--", "0");
$.each(aData, function(i,item) {
$('#myStudents').get(0).options[$('#myStudents').get(0).options.length] = new Option(item[i].Name, item[i].roll);
// Display Value
});
},
error:function(){alert("Connection Is Not Available");}
});
return false;
}