JQuery не показывает ответ после отправки данных JSON - PullRequest
0 голосов
/ 05 декабря 2018

У меня проблема с отображением ответа jQuery при отправке данных с использованием JSON.

это мой HTML

<input required="" width="100%" name="category_id" id="category_id" 
class="form-control">

<input required="" width="100%" name="agent_id" id="agent_id" 
class="form-control">

<input required="" width="100%" name="year" id="year" 
class="form-control">

<button type="button" onclick="historyForm()" title="fetch history"> 
view</button>

<div id="ajax-content">
</div>

Вот мой скрипт

    <script type="text/javascript">
    function historyForm() {

    $.ajax({
        url: '<?php echo base_url();?>index.php?staff/fetch_history',
        method: 'POST',
        dataType: 'json',
        data: {
            category_id: $("#category_id").val(),
            agent_id: $("#agent_id").val(),
            year: $("#year").val(),
        },
        success: function (response) {
            jQuery('#ajax-content').html(response);
        }
    });
   }

  </script>

Вот мой контроллер

function fetch_history()
{
    $response = array();
    $category_id = $_POST["category_id"];
    $agent_id = $_POST["agent_id"];
    $year = $_POST["year"];
    $page_data['category_id']    =   $category_id;
    $page_data['agent_id']    =   $agent_id;
    $page_data['year']    =   $year;
    $response = $this->load->view('backend/staff/history_result' , 
 $page_data);
    echo json_encode($response);
}

Я не вижу ни ответа, ни ошибки, но когда я пытаюсь написать $page_data вручную, скажем $year = '2018', $agent_id = 1 and $category_id = 2, я получаю ответ.

В чем может быть проблема?

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Вы пытаетесь отправить HTML-страницу через json ... изменить dataType с $.ajax, например:

$.ajax({
    url: '<?php echo base_url();?>index.php?staff/fetch_history',
    method: 'POST',
    dataType: 'html',  // here is the change
    data: {
        category_id: $("#category_id").val(),
        agent_id: $("#agent_id").val(),
        year: $("#year").val(),
    },
    success: function (response) {
        jQuery('#ajax-content').html(response);
    }
});
0 голосов
/ 05 декабря 2018

Вам не хватает ИСТИНЫ как третьего параметра в просмотре страницы, поэтому он выводится напрямую, а не сохраняется в $ response.

Поэтому измените эту строку

$response = $this->load->view('backend/staff/history_result',$page_data);

Добавление3-й параметр ИСТИНА, который не позволяет выводить его непосредственно на экран, который появится в вашем ответе.

$response = $this->load->view('backend/staff/history_result',$page_data, TRUE);
0 голосов
/ 05 декабря 2018

Попробуйте с приведенным ниже кодом в вашем контроллере

function fetch_history()
{
    $response = array();
    $category_id = $_POST["category_id"];
    $agent_id = $_POST["agent_id"];
    $year = $_POST["year"];
    $page_data['category_id']    =   $category_id;
    $page_data['agent_id']    =   $agent_id;
    $page_data['year']    =   $year;
    $response = $this->load->view('backend/staff/history_result' , 
 $page_data);

    $newResponse = ['result'=>$response];

    echo json_encode($newResponse);
}

И получите успешный результат с

response.result

Проверьте, если этопомогает ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...