2012-12-13 10 views
5

Mam problem z Codeigniter i JSON. Oto mój kodowanie:Kod QR PHP JSON wysyła odpowiedź HTML

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

... I w moim kontrolera:

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

ale za każdym razem odpowiedź moja json z HTML całym moim zdaniem np moją odpowiedź

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

spróbuj uruchomić tę funkcję w swojej przeglądarce pasek adresu URL. Sprawdź, co zwraca. A także spróbuj użyć funkcji (dane, status, xhr). –

+2

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

+0

Czy masz jakieś widoki w konstruktorze kontrolera? – TheHorse

Odpowiedz

2

Po pierwsze, dobrą praktyką jest nie używanie "echa" i używanie "powrotu". Starają się odłożyć kontrolera bezpośrednio do adresu URL i sprawdzić, czy json powrót

+0

On nic nie zwraca, ale odsyła go do przeglądarki. –

1
użycie

Spróbuj absolutny URL

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

i lepiej jest powrót następnie zjazd wewnątrz funkcji CodeIgniter

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

codeigniter automatycznie wysyła html (layout) dla każdego żądania. on chce wyłączyć to, a nie jaka jest twoja odpowiedź. – Kannika

1

Prawdopodobnie istnieje problem z adresem URL. Pozwól mi podać przykład problemu z routingiem URL.

Powiedzmy, że funkcja indeksu kontrolera administratora ładuje stronę główną administratora, więc w metodzie ładowania, w części adresu URL, jeśli piszesz tylko "addschool", wywołanie ajax przejdzie do funkcji addschool.

łańcuchowym odbywa się automatycznie, admin/addschool

Ale powiedzmy na przykład, funkcja admin/load_view ładunki ur Widok strony, teraz jeśli u wpisać addschool w url, łańcuchowym odbędzie, a adres URL staną

admin/load_view/addschool

Więc trzeba sprawdzić działanie CodeIgniter, które jest ładowanie strony widok, a następnie użyć odpowiedniego łańcuchowy