Codeignigter控件未返回JSON

时间:2019-03-21 22:52:31

标签: php json codeigniter

在没有输出JSON的地方发生了一件奇怪的事情。 Chrome显示

“无法加载响应数据”。

我的控制器任务很简单,其他实例返回JSON,但就我的一生而言,我无法弄清楚。以下函数返回加载失败消息。但是,如果我取消注释var_dump()行。我得到了预期的var_dump和回显的JSON。如何只输出JSON。

public function updateDealStatus() {

$response_array = array();

$data = $_POST;

if (isset($data["currentDeal"]) && $data["currentDeal"] >= 0) {

    $update = array('deal_status' => $data['statusUpdate']);    

    $this->db->where('deal_id', $data["currentDeal"]);
    $this->db->update('deals', $update);  

    if ($this->db->trans_status() === TRUE) {
        $response_array = array('status' => 'success', 'message' => 'Data changed'); 
    } else {
        $response_array = array('status' => 'success', 'failed' => 'No data changed'); 
    }

}

header('Content-Type:application/json');

//var_dump(json_encode($response_array));

echo json_encode(array($response_array));
return;

}

Ajax呼叫:

$.ajax({
                type: "POST",
                dataType: "json",
                url: url,
                cache : false,
                data: data, // serializes the form's elements.
                success: function (res) {

                        $('#quickTimeModal').modal('toggle');

                }
            });

enter image description here

更多:在Ajax调用中添加细节:

contentType: "application/json; charset=utf-8",
dataType: "json",

var_dump的结果是:

ajax

和“无法加载响应数据”。没有var_dump。

2 个答案:

答案 0 :(得分:0)

您可以尝试吗

//header('Content-Type:application/json');

//var_dump(json_encode($response_array));

echo json_encode($response_array);
exit();

从ajax调用中删除contentType

答案 1 :(得分:0)

This is build in codeigniter check for ajax `$this->input->is_ajax_request()`

    if( $this->input->is_ajax_request() ) {
        error_reporting (0);
        echo json_encode( $response_array);
    }
    else{
        echo '<meta charset="UTF-8"/>';
        echo 'NON AJAX MODE :<br /><br /><pre>' . print_r( $response_array, true ) . '</pre>';
    }