Codeigniter: как передать массив из контроллера в представление без обновления

#javascript #php #ajax #json #codeigniter

#javascript #php #ajax #json #codeigniter

Вопрос:

По сути, у меня есть форма в представлении с включенным одним входом и отключенным несколькими входами (только для отображения информации, полученной из уникального ввода).

Теперь мне нужно отправить этот ввод в контроллер, чтобы сделать запрос, и отправить обратно в представление массив с информацией о полях, но без обновления сайта (потому что я не могу потерять прогресс, который у меня есть на этой странице).

Может быть, решение состоит в том, чтобы использовать javascript для отправки контроллеру поля ввода, а в функции возвращать массив значений для обновления формы, но как?

РЕДАКТИРОВАТЬ: Извините за мой плохой английский.

Комментарии:

1. подсказка: он помечен на ваш вопрос

2. Конечно, но мои знания javascript, ajax или json минимальны, я знаю, что это возможно, но я не знаю, как это сделать.

3. Есть ли у вас какой-либо код javascript на данный момент?

4. вы искали какие-либо учебные пособия ( codeigniter ajax php ). вот один

5. ajax и сериализация облегчат вашу жизнь

Ответ №1:

 var input = $('#input').val();
$.ajax({
        type:"POST",
        url: <?php echo base_url().'controllername/action'?>
        data: {input : input},
        success: function(data){
        // this data should be contain an arra
        $('#where_to_insert_array').html();
         }


 });
  
  • В действии контроллера и в действии

    функция action() { $data = $this->input->post(‘ввод’);

  • получить данные из базы данных в $data

  • создайте его массив, а затем повторите его

    echo array(); }

Ответ №2:

Наконец, я понимаю, как динамически передавать массив из контроллера в представление, это код:

Просмотр javascript:

 function getClient(){
if($('#cedula_cliente').val()){
    $.ajax({
        type : "post",
        url: "<?php echo base_url().'index.php/clientes/getClienteFactura'?>",
        cache: false,
        data : {cedula :  $('#cedula_cliente').val()},
        success : function(json){
            var obj=jQuery.parseJSON(json);
            if(obj[0]){
                $('#nombre_cliente').val(obj[0].nombre);
                $('#apellido1_cliente').val(obj[0].apellido1);
                $('#apellido2_cliente').val(obj[0].apellido2);
                $('#dir_cliente').val(obj[0].dir);
            }else{
                alert("Usuario no encontrado");
            }

        },
    });
}else{
    alert("Debe ingresar una cédula de usuario");
}
  

}

Я использую obj [0], потому что «cedula» является первичным ключом, и он никогда не вернет более 1 строки.

И это функция контроллера:

 public function getClienteFactura(){
    $cedula = $this->input->post('cedula');

    $query = $this->Client_model->getClientByCedula($cedula);
    echo json_encode($query); 
}   
  

Спасибо за ответы, возможно, мне следовало лучше поискать в Google, ключом к решению проблемы был Json.