2012-12-13 45 views
5

Tôi gặp sự cố với Codeigniter và JSON. Đây là mã của tôi:Codeigniter PHP JSON gửi phản hồi HTML

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

... và trong điều khiển của tôi:

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

Nhưng mỗi lần json tôi trả lời với mã HTML của toàn bộ quan điểm của tôi như phản ứng của tôi

<!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> 
+2

cố gắng để chạy chức năng này trong trình duyệt của bạn thanh url. Kiểm tra những gì nó trả về. Và cũng cố gắng sử dụng chức năng (dữ liệu, trạng thái, xhr). –

+2

Thử '$ this-> output-> set_content_type ('application/json'); $ this-> output-> set_output (json_encode ($ data)); exit(); ' – GBD

+0

Bạn có một số khung nhìn trong hàm tạo của controller không? – TheHorse

Trả lời

2

Đầu tiên, thực hành tốt là không để bạn sử dụng "echo", và bạn sử dụng 'return'. Cố gắng đưa xuống bộ điều khiển trực tiếp đến URL và xem nếu trở lại json bạn

+0

Anh ấy không trả lại bất cứ điều gì mặc dù, anh ta 'echoing' nó ra trình duyệt. –

1

Hãy thử sử dụng URL tuyệt đối

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

Và nó là tốt hơn trở lại sau đó thoát ra bên trong chức năng CodeIgniter

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

Trình mã hóa tự động gửi html (bố cục) cho mọi yêu cầu. anh ta muốn vô hiệu hóa thứ đó, không phải câu trả lời của bạn là gì. – Kannika

1

Có lẽ đó là một vấn đề với url. Hãy để tôi cung cấp cho bạn một ví dụ về vấn đề định tuyến url

Cho phép nói, chức năng chỉ mục của bộ điều khiển quản trị sẽ tải trang chủ quản trị, do đó, trong phương thức tải, trong phần url, nếu bạn chỉ cần viết "addschool", cuộc gọi ajax sẽ đi đến chức năng giáo dục.

Một chain được thực hiện tự động, admin/addschool

Nhưng nói ví dụ, chức năng admin/load_view tải trang xem ur, bây giờ nếu u gõ addschool trong url, dí sẽ diễn ra, và url sẽ trở thành

admin/load_view/addschool

Vì vậy, bạn phải kiểm tra chức năng CodeIgniter đó là tải trang xem, sau đó sử dụng thích hợp chaining

Các vấn đề liên quan