jQuery通过JSON提交数据后不显示响应

时间:2018-12-05 09:55:57

标签: jquery json ajax codeigniter

我在使用JSON提交数据时jQuery显示响应时遇到问题。

这是我的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 :(得分:1)

在控制器中尝试以下代码

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

检查是否有帮助。

答案 1 :(得分:1)

您正尝试通过json发送HTML页面...将dataType的{​​{1}}更改为:

$.ajax

答案 2 :(得分:0)

您在页面视图中缺少第三个参数TRUE,因此直接将其输出而不是保存到$ response中。

因此更改此行

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

添加第3个参数TRUE,以防止其直接输出到屏幕上,该屏幕将出现在您的响应中。

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