【问题标题】:Codeignigter controler not returning JSONCodeigniter 控制器不返回 JSON
【发布时间】:2019-03-21 22:52:31
【问题描述】:

我在没有输出 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');

                }
            });

更多:向 Ajax 调用添加细节:

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

var_dump 的结果是:

并且“加载响应数据失败”。没有 var_dump。

【问题讨论】:

  • 注释return; 并以这种方式返回数据echo json_encode($response_array);
  • 是的,我也试过了,结果显示“加载响应数据失败”。我也尝试过刷新输出缓存,它也给出了相同的“加载响应数据失败”。

标签: php json codeigniter


【解决方案1】:

你能试试这个吗,

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

//var_dump(json_encode($response_array));

echo json_encode($response_array);
exit();

从 ajax 调用中移除 contentType

【讨论】:

    【解决方案2】:
    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>';
        }
    

    【讨论】:

      猜你喜欢
      • 2013-09-20
      • 2012-02-21
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 2013-07-06
      相关资源
      最近更新 更多