2013-08-02 72 views
0

我目前有一個下拉列表,它是從我的數據庫與json動態生成的。目前value的選擇框和displayed text是一樣的。兩個json值都被傳遞。codeingiter - 從模型傳遞兩個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 fie LD。

,所以我想這樣做: $("#deliveryaddress").append('<option value="'+idDelAddress_value+'">'+Address_value+'</option>')

任何建議表示讚賞。

在此先感謝。

回答

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>'); 
}); 

這只是一個粗略的假設。希望能幫助到你。

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數據。

+0

謝謝Sathya,感謝幫助。模型的改變似乎很好,但我得到了錯誤'result.address不是一個函數'第76行是'opt + ='''任何想法,謝謝! – Smudger

+0

@Smudger它可能是因爲你的json變量結構,你可以告訴我你從那個函數或url得到你的json輸出嗎? –

相關問題