#javascript #php #jquery #ajax #codeigniter
#javascript #php #jquery #ajax #codeigniter
Вопрос:
Я работаю над системой управления школой. Я просто создаю данные об учениках по их классу и разделу. Я использую ajax codeigniter controller, но я не могу передать две переменные в вызове ajax для выполнения поиска по двум параметрам.
Мой Ajax-код
<script>
$(document).ready(function () {
$('#example').DataTable({
'paging': true,
'searching': true,
'ordering': true,
'autoWidth': false
});
$('#student').click(function (event) {
event.preventDefault();
var xclass = $('.sclass').val();
var section = $('.section').val();
//
$.ajax({
url: "<?php echo base_url(); ?>Admission/fetchStudent/",
type: "POST",
data: {'xclass': xclass, 'section':section},
datatype: 'json',
success: function (data) {
$("#resultlist").html(data);
}
});
});
}); //event.preventDefault();
</script>
Мой контроллер
public function fetchStudent($class,$section){
$this->load->model('Admission_model');
$data = $this->Admission_model->fetchStudentmodel($class,$section);
echo '<pre>';
print_r($data);
exit();
echo json_encode($data);
}
Моя модель
public function fetchStudentmodel($x,$y) {
$uid = $this->session->userdata('user_id');
$data = $this->db->select('*')
->from('student')
->where(['user_id' => $uid,'class'=>$x, 'section'=>$y])
->get();
if ($data->num_rows() > 0) {
return $data->result();
} else {
return 'No data Available';
}
}
Посмотрите на это изображение, тогда вы сможете понять, что я хочу сделать
Комментарии:
1. Вы хотите передать URL-адрес или как значение POST?
2. Сэр, я хочу передать две переменные в Ajax URL, например URL: «<?php echo base_url(); ?>Admission/fetchStudent/» xclass,
3. вы отправляете только 1 параметр
data: {'xclass': xclass}
и вы также не используете это значение в своем контроллере, я думаю, вы используете slug из URL.4. Сэр, я также должен был использовать {‘xclass’: xclass, ‘section’: section}, но у меня не получилось
5. попробуйте с
{xclass:xclass, section:section}
Ответ №1:
В вашем случае вы можете передать 2 значения в параметрах следующим образом:
data: { key1: value1, key2: value2 }
И вы можете получить их в своем контроллере, используя $_POST
Но в вашем примере вы отправляете только 1 параметр и не получаете его в своем контроллере, вы используете свой URL-адрес для получения класса.
В вашем файле контроллера вы можете просто получить значения в $_POST
, вы можете проверить оба значения с помощью:
echo '<pre>';
print_r($_POST);
Вы получите оба ваших значения в, $_POST
затем вы сможете получить доступ с помощью $_POST['key1']
или $_POST['key2']
Еще одна вещь, я не знаю, почему вы используете одинарные кавычки в ключе вашего параметра, я думаю, это будет преобразовано в строковую переменную.
Второе решение для вашего примера: var xclass = $(‘.sclass’).val(); var section = $(‘.section’).val();
data: 'class=' xclass 'amp;section=' section, // here you can use quote and amp; for separation.
Ответ №2:
Попробуйте это,
$.ajax({
url: "<?php echo base_url(); ?>Admission/fetchStudent/",
type: "POST",
data: ({xclass: xclass, section:section}),//changes
datatype: 'json',
success: function (data) {
$("#resultlist").html(data);
}
});
public function fetchStudent(){//changes
$this->load->model('Admission_model');
$class = $this->input->post('xclass');//changes
$section = $this->input->post('section');//changes
$data = $this->Admission_model->fetchStudentmodel($class,$section);
echo '<pre>';
print_r($data);
exit();
echo json_encode($data);
}
Комментарии:
1.
$_POST('xclass')
я думаю, это создаст проблему, проверьте другой ответ.