代码点火器php和jquery - 如何从多个表中获取数据并通过ajax返回它

mhe*_*ers 5 php ajax jquery codeigniter

我目前正在使用jquery从codeigniter后端/ mySQL数据库通过ajax获取JSON数据,这很好.我遇到的问题是,与返回到jquery函数的数据一起,我还需要为另一个表中的某些数据运行PHP循环.目前我正在做的是等待第一个函数的ajax成功,然后对第二个函数进行另一个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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

function get_all_groups(){
        $query = $this->db->get('groups');
        $result = $query->result();
        return $result;
    }
Run Code Online (Sandbox Code Playgroud)

然后在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
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

小智 7

在PHP中,您可以将两者合二为一,然后将其作为json变量回显给ajax .所以在php中你需要一个像下面这样的改变

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

然后在javascript类似下面..

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
});
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助 :)