在没有输出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。
答案 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>';
}