#php #jquery #ajax #codeigniter
#php #jquery #ajax #codeigniter
Вопрос:
В настоящее время я использую jquery для получения данных JSON через ajax из серверной части codeigniter / базы данных MySQL, которая работает нормально. Проблема, с которой я сталкиваюсь, заключается в том, что наряду с данными, которые возвращаются в функцию 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;
}
}
И
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
}
});
}
});
Ответ №1:
В PHP вы можете объединить оба в одну, а затем передать их в ajax в качестве json
переменной. Итак, в 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);
}
Затем в 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
});
Надеюсь, это поможет вам 🙂