2013-03-01 15 views
5

Mam wywołanie ajax z javascript do metody w kontrolerze, metoda w kontrolerze powinna ładować widok (np. Pokazać nową stronę na ekranie), chociaż wszystko Wygląda na ok, nowy widok nie ładuje się na ekranie. Nie mogę użyć nagłówka ani okna.location, ponieważ przekazuję zmienną tablicową, zawierającą dane do użycia w widoku.ładowanie widoku po wywołaniu ajax, CodeIgniter

Strona jest widoczna na karcie Sieć (podtablica podglądu, podczas wybierania ajax) konsoli debugowania Chrome. Ale ekran główny pozostaje taki, jaki jest.

Jeśli ktoś napotkał podobny problem lub ma rozwiązanie, pomóż mi.

Dzięki!

+0

Czy próbujesz zmienić całą zawartość ekranu lub tylko zawartość w ele ment? – Brendan

+0

Próbuję zmienić całą zawartość, załadować nowy, świeży widok – Archer

+0

Nie jestem pewien, dlaczego używasz ajax wtedy. Dlaczego po prostu nie łączysz się z kontrolerem/metodą? – Brendan

Odpowiedz

7

OK, oto, co robisz źle.

kiedy zażądasz strony za pomocą ajax, nie zwróci ci tej strony.

przy użyciu $ this-> load-> view ('nazwa strony', $ datapassed); ładuje widok i dlatego nic nie widzisz.

Co trzeba zrobić, to użyć

$data=$this->load->view('pagename',$datapassed, TRUE); 

co to będzie zrobić, to zwróci tę stronę i zapisać go w $ dane po tym można go wydrukować przy użyciu

$this->set_output($data); 

i otrzymać to w wyniku ajax i załadować go w div.

a jeśli chcesz, aby odświeżyć całą stronę można użyć

$(body).html(result); 

Musisz zrozumieć, że trzeba wysłać stronę HTML przez dostarczanie że trzeci parametr w widoku obciążenia.

+0

Wielkie dzięki! – Archer

+0

ya to naprawdę mi pomogło, ale zamiast '$ this-> set_output ($ data)' bezpośrednio wywołałem echo zmiennej 'echo $ data' i zadziałało dla mnie. Dzięki za koncepcję – Dipen

+0

'$ this-> output-> set_output ($ data);' działa dla mnie. Nie wiem, czy zaktualizowali go, ale używam CodeIgniter w wersji 3.0.4. –

3

W klasie kontrolera

function get_view_ajax() 
{ 
    $data['username] = $_POST['username]; 
    $response = $this->load->view('radius/radius_corporate_graph',$data,TRUE); 
    echo $response; 
} 

Biorąc pliku, w którym zainicjować wywołanie ajax

$('#button').click(function(){ 
var username = $('#username').val(); 

$.ajax({ 
    type:'POST', 
    url:"<?php echo base_url(); ?>controller_name/get_view_ajax/", 
    data: "username="+username, 
    success:function(msg){ 
    $("#div_result").html(msg); 
    }, 
    error: function(result) 
    { 
     $("#div_result").html("Error"); 
    }, 
    fail:(function(status) { 
     $("#div_result").html("Fail"); 
    }), 
    beforeSend:function(d){ 
    $('#div_result').html("<center><strong style='color:red'>Please Wait...<br><img height='25' width='120' src='<?php echo base_url();?>img/ajax-loader.gif' /></strong></center>"); 
    } 

    }); 
}); 

<div id="div_result"> 
<a href="#" id="button">Click here </a> 

Kolejnym plikiem widoku mają zostać załadowane na funkcję regulatora (extra_info.php) jako skieruję na funkcję get_view_ajax

<h1>This page is called from ajax function </h1> 
Powiązane problemy