2012-12-13 14 views
5

Ho un problema con Codeigniter e JSON. Qui è il mio codice:Codeigniter PHP JSON invia risposta HTML

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

... e nel mio controller:

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

Ma ogni volta la risposta mia JSON con il codice HTML di tutto il mio punto di vista ad esempio, la mia risposta

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

tenta di eseguire questa funzione nel tuo browser barra degli indirizzi. Controlla cosa restituisce. E prova anche a usare la funzione (dati, stato, xhr). –

+2

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

+0

Avete alcune viste nel costruttore del controller? – TheHorse

risposta

2

Innanzitutto, è buona norma non usare "echo", e si usa il "ritorno". Provate a mettere giù il controller direttamente a URL e vedere se il vostro JSON ritorno

+0

Tuttavia, non restituisce nulla, sta "echeggiandolo" al browser. –

1
uso

Prova URL assoluto

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

Ed è meglio tornare poi uscire dentro funzione codeigniter

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

codeigniter invia automaticamente html (layout) per ogni richiesta. lui vuole disabilitare quella cosa, non la tua risposta. – Kannika

1

Probabilmente c'è un problema con l'url. Permettetemi di darvi un esempio di problema di routing dell'URL

Diciamo che la funzione indice del controller admin carica la home page dell'amministratore, quindi nel metodo load, nella parte url, se scrivete solo "addschool", la chiamata ajax andrà alla funzione addschool.

Un concatenamento viene fatto automaticamente, admin/addschool

Ma diciamo per esempio, la funzione admin/load_view carichi ur pagina di visualizzazione, ora se u digitare addschool nell'URL, il concatenamento si svolgerà, e l'url diventerà

admin/load_view/addschool

Così si controlla la funzione di CodeIgniter che sta caricando la pagina di visualizzazione, quindi utilizzare il concatenamento appropriata