2012-12-13 2 views
5

У меня проблема с Codeigniter и JSON. Вот мое кодирование:Codeigniter PHP JSON отправляет HTML-ответ

$.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> 
+2

попробовать запустить эту функцию в вашем браузере url bar. Проверьте, что он возвращает. А также попробуйте использовать функцию (данные, статус, xhr). –

+2

Попробуйте '$ this-> output-> set_content_type ('application/json'); $ this-> output-> set_output (json_encode ($ data)); exit(); ' – GBD

+0

У вас есть некоторые представления в конструкторе контроллера? – TheHorse

ответ

2

Во-первых, это хорошая практика, когда вы не использовали «эхо», и вы используете «возврат». Попробуйте сложить контроллер непосредственно к URL и посмотреть, если ваше возвращение JSON

+0

Он ничего не возвращает, но он «эхом» в браузере. –

1
использование

Try абсолютный URL

$.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; 
} 
+0

codeigniter автоматически отправляет html (макет) для каждого запроса. он хочет отключить эту вещь, а не ваш ответ. – Kannika

1

Возможно есть проблема с URL. Позвольте мне привести u пример проблемы маршрутизации URL-адреса

Допустим, что функция индекса контроллера администратора загружает домашнюю страницу администратора, поэтому в методе загрузки в части url, если вы просто пишете «добавочную школу», вызов ajax пойдет на добавочную функцию.

цепочки выполняется автоматически, администратор/addschool

Но сказать, например, функция администратора/load_view загружает ур страницы просмотра, теперь если и тип addschool в URL, цепочки будут иметь место, и URL стану

админ/load_view/addschool

Таким образом, вы должны проверить функцию CodeIgniter, загружающая страницу просмотра, а затем использовать соответствующее формирование цепочки

Смежные вопросы