2011-06-03 12 views
5

我目前使用jquery通过ajax从codeigniter后端/ mySQL数据库中获取JSON数据,这很好。我遇到的问题是,除了返回到jquery函数的数据外,我还需要为另一个表中的某些数据运行PHP循环。目前我正在做的是等待第一个函数的ajax成功,然后再调用第二个函数的ajax - 但我知道有一种方法只用一个函数来完成,但我不知道如何实现。下面是这两个数据库查询:代码igniter php和jquery-如何从多个表中获取数据并通过ajax返回

function get_selected_member($member = null){ 
     if($member != NULL){ 
      $this->db->where('id', $member); //conditions 
     } 
     $query = $this->db->get('members'); //db name 

     if($query->result()){ 
      $member_result = $query->row(); 
      return $member_result; 
     } 
    } 

function get_all_groups(){ 
     $query = $this->db->get('groups'); 
     $result = $query->result(); 
     return $result; 
    } 

,然后在javascript函数,我在做什么时说:

var post_url = "/index.php/control_form/get_selected_member/" + selected_member_id; 
$('#chosen_member').empty(); 
$.ajax({ 
    type: "POST", 
    url: post_url, 
    success: function(member) 
    { 
     //Add all the member data and... 

     var post_url2 = "/index.php/control_form/get_all_groups/"; 
     $.ajax({ 
      type: "POST", 
      url: post_url2, 
      success: function(group) 
      { 
     //Create a dropdown of all the groups 
      } 
     }); 
    } 
}); 

回答

7

在PHP中你可以结合两个在一个然后回声给AJAX为json变量。所以,在PHP,你需要一个像改变在JavaScript类似下面以下

function get_member_with_group($member = null){ 
    $data['member'] = $this->get_selected_member($member); 
    $data['group'] = $this->get_all_groups(); 
    echo json_encode($data); 
} 

然后..

var post_url = "/index.php/control_form/get_member_with_group/" + selected_member_id; 
$('#chosen_member').empty(); 
$.getJSON(post_url, function(response){ 
    var member = response.member; 
    //do with member 
    var group = response.group; 
    // do with group 
}); 

希望这将帮助你:)

+0

是的,这是完美的,谢谢! – mheavers 2011-06-03 20:24:08

+0

真的很棒非常感谢 – 2013-05-22 10:11:26

相关问题