我目前有一个下拉列表,该列表是使用json从我的数据库动态生成的。目前,选择框的value
和displayed text
是相同的。两个json值都被传递。
我想调整我的模型以将两个json值返回到下拉列表。一个是displayed
文本,一个是value
。
如何调整json和我的jquery脚本以使用字段idDelAddress
填充值,并将显示的文本填充为字段address
我的模特是:
function GetDeliveryAddressfromCustomer($q){
$query = $this->db->query("
select idDelAddress, address
from [NFG_Live].[dbo].[Client]
join
[NFG_Live].[dbo].[_etblDelAddress]
on
[NFG_Live].[dbo].[_etblDelAddress].iAccountID=[NFG_Live].[dbo].[Client].DCLink
where Name='$q'
");
if($query->num_rows > 0){
foreach ($query->result_array() as $row){
$row_set[] = htmlentities(stripslashes($row['address']));
$row_set[] = htmlentities(stripslashes($row['idDelAddress'])); //I added this for second field. correct?
}
return $row_set;
}
}
我的JQuery是:
$.post('GetDeliveryAddressfromCustomer', {data:selectedObj.value},function(result) {
$("#deliveryaddress").html('<option value=""></option>'); //or you could empty it or ignore this line
$.each(result, function(index, value) {
$("#deliveryaddress").append('<option value="'+value+'">'+value+'</option>')
});
}
, "json"
);
我不确定如何调整我的模型以将2个字段传递给视图..在我看来,我不确定如何调用secind json字段。
所以我想要这样做:
$("#deliveryaddress").append('<option value="'+idDelAddress_value+'">'+Address_value+'</option>')
任何建议都表示赞赏。
提前致谢。
答案 0 :(得分:0)
您可能需要这个,在您的模型中进行此更改:
if($query->num_rows > 0){
foreach ($query->result_array() as $row){
$arr = array(
"address"=>htmlentities(stripslashes($row['address'])),
"idDelAddress"=>htmlentities(stripslashes($row['idDelAddress']))
);
$row_set[] = $arr;
//$row_set[] = htmlentities(stripslashes($row['address']));
//$row_set[] = htmlentities(stripslashes($row['idDelAddress'])); //I added this for second field. correct?
}
return $row_set;
}
现在在您循环的javascript中,执行以下操作:
$(jQuery.parseJSON(JSON.stringify(result))).each(function() {
$("#deliveryaddress").append('<option value="'+this.idDelAddress+'">'+this.address+'</option>');
});
这只是一个粗略的假设。希望它有所帮助。
答案 1 :(得分:0)
你要做的就是将两个数组存储在另一个数组中,并将json_encode()存储在变量中,同时显示输出
模型为
function GetDeliveryAddressfromCustomer($q){
$query = $this->db->query("
select idDelAddress, address
from [NFG_Live].[dbo].[Client]
join
[NFG_Live].[dbo].[_etblDelAddress]
on
[NFG_Live].[dbo].[_etblDelAddress].iAccountID=[NFG_Live].[dbo].[Client].DCLink
where Name='$q'
");
if($query->num_rows > 0){
foreach ($query->result_array() as $row){
$address[] = htmlentities(stripslashes($row['address']));
$idDelAddressr[] = htmlentities(stripslashes($row['idDelAddress'])); //I added this for second field. correct?
}
$row_set['address'] = $address;
$row_set['idDelAddress'] = $idDelAddress;
return $row_set;
}
}
在您的控制器中执行类似的操作
function controller_fn(){
$json_var = $this->your_model->GetDeliveryAddressfromCustomer($q);
echo json_encode($json_var);
}
在你的js中你必须做这样的事情
$.post('GetDeliveryAddressfromCustomer', {data:selectedObj.value},function(result) {
var opt="";
for(i=0;i<result.address.length;i++){
opt += '<option value="'+result.idDelAddress+'">'+result.address(i)+'</option>'
}
$('#deliveryaddress').append(opt);
},"json");
您已确保输出是有效的json检查here,并且您可能还需要知道如何提取json数据。