почему представление codeignater загружает весь код html в ответ - PullRequest
1 голос
/ 24 февраля 2020

Я пытаюсь загрузить данные запроса на странице html, но показывает все html код в предупреждении, это мой контроллер

public function Get_account_data_for_report(){
    if($this->session->userdata('user_login_access') != False) {
        $from_date=$this->input->post('date_from');
        $to_date=$this->input->post('date_to');
        $id=$this->input->post('acc_id');
        $data['report']=$this->Accounts_model->individual_acc($from_date,$to_date,$id);
        echo json_encode($data);
    }else{
        redirect(base_url() , 'refresh');
    }
}

Это мой ajax

$(document).ready(function() {
    $('#getReport').click(function(){
      var date_from=$('#date_from').val();
        var date_to=$('#date_to').val();
        var acc_id=$('#acc_id').val();

            $.ajax({
                url:'Get_account_data_for_report',
                method:'POST',
                data: {
                    date_from: date_from,
                    date_to: date_to,
                    acc_id: acc_id
                }
            }).done(function(response) {
                alert(response);
                var data = JSON.parse(response);
            })
    })
});

И это мой html

<form  action="" class="form-material row" method="POST">
    <div class="form-group col-md-3">
        <input type="text" name="from_date" id="from_date"  class="form-control mydatetimepickerFull" placeholder="from">
    </div>
    <div class="form-group col-md-3">
        <input type="text" id="to_date" name="to_date"  class="form-control mydatetimepickerFull" placeholder="to">
    </div>
    <div class="form-group col-md-3">
        <select class="form-control custom-select"  tabindex="1" name="acc_id" id="acc_id"  required>
        <option>Account</option>
         <?php foreach($accounts as $k=>$v): ?>
         <option value="<?php echo $v->Accounts_id ?>">
            <?php echo $v->Account_Name ?>

         </option>
         <?php endforeach;  ?>
        </select>
    </div>
    <div class="col-md-3 form-group">
    <input type="submit" class="btn btn-success" value="Submit" id="getReport">

, даже если я написал direct в действии, тоже выдавая ту же ошибку, а в консоли он показывает весь код html и

{readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}

readyState: 4
getResponseHeader: ƒ (a)
getAllResponseHeaders: ƒ ()
setRequestHeader: ƒ (a,b)
overrideMimeType: ƒ (a)
statusCode: ƒ (a)
abort: ƒ (a)
state: ƒ ()
always: ƒ ()
catch: ƒ (a)
pipe: ƒ ()
then: ƒ (b,d,e)
promise: ƒ (a)
progress: ƒ ()
done: ƒ ()
fail: ƒ ()

1 Ответ

0 голосов
/ 24 февраля 2020

Я никогда не смотрел на CodeIgniter, так что, возможно, это далеко от цели, но если запрос AJAX показывает всю текущую страницу HTML в ответе, вам нужно избавиться от любого контента, сгенерированного чем-либо кроме вашего Get_account_data_for_report метода. Если кто-то отправляет запрос ajax на ту же страницу, я обычно звоню на ob_clean() перед отправкой каких-либо данных и явно прекращаю ответ после отправки данных - с этой целью может помочь следующая помощь? !

public function Get_account_data_for_report(){
    ob_clean(); #discard any previous output from the buffers

    if( $this->session->userdata('user_login_access') != False ) {
        $from_date=$this->input->post('date_from');
        $to_date=$this->input->post('date_to');
        $id=$this->input->post('acc_id');
        $data['report']=$this->Accounts_model->individual_acc($from_date,$to_date,$id);

        #terminate response here
        exit( json_encode( $data ) );
    }else{
        redirect(base_url() , 'refresh');
    }
}

Также, возможно, вы могли бы немного изменить функцию jQuery:

$('#getReport').click(function(){....

до

$('#getReport').click(function(e){
    e.preventDefault(); ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...