Codeigniter PHP JSON发送HTML响应

时间:2012-12-13 10:46:22

标签: php json codeigniter

我有Codeigniter和JSON的问题。这是我的编码:

$.post("Admin/Admin/addschool", {test: 'test'}, function(data){             
  if (data.status == 'ok')
    alert(data);
  else 
    alert(data);
}, "json");

......在我的控制器中:

public function addschool() {
  $data = array("status" => "ok", "message"=> "something ");  
  echo json_encode($data);  
  exit(); 
}

但每次我的json回复我的整个视图的HTML,例如我的回复

<!doctype html>

<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://localhost:10090/css/layout.css" />
<title>Administration</title>
<meta name="description" content="">
<meta name="author" content="">
</head>

3 个答案:

答案 0 :(得分:2)

首先,最好不要使用“echo”,并使用“return”。尝试将控制器直接放到url上,看看你是否返回json

答案 1 :(得分:1)

尝试使用绝对网址

$.post("/Admin/Admin/addschool", {test: 'test'}, function(data){             
  if (data.status == 'ok')
    alert(data);
  else 
    alert(data);
}, "json");

最好返回然后退出codeigniter函数

public function addschool() {
  $data = array("status" => "ok", "message"=> "something ");  
  echo json_encode($data);  
  return; 
}

答案 2 :(得分:1)

可能是网址存在问题。让我举一个url路由问题的例子

让我们说,管理控制器索引函数加载管理主页,所以在加载方法中,在url部分,如果你只是写“addschool”,那么ajax调用将转到addschool函数。

链接自动完成,admin / addschool

但是比如说,函数admin / load_view 加载您的查看页面,现在,如果您在网址中键入addschool,将进行链接,并且网址将变为

管理员/ load_view / addschool

所以你必须检查加载视图页面的codeigniter函数,然后使用适当的链接