2013-12-16 6 views
0

URL에 매개 변수를 전달하고 컨트롤러 함수로 가져 오려고합니다. 앵커에 onclick 값을 자바 스크립트 함수에 전달했습니다. URL에 매개 변수를 전달하는 방법

는 온 클릭 앵커 :

<a href="" onclick="change_lang('<?=base_url()?>home/change_lang','en')">English</a> 

이 자바 스크립트 함수 :

function change_lang(page,str) 
{ 
    var url=page; 
    var params='?lang='+str; 

    makerequest_sp(url, params); 
} 

이 컨트롤러 기능이다

public function change_lang() 
{ 
    $lang=$this->input->Get('lang'); 

    if(!isset($lang)) 
    { 
    $this->session->set_userdata('lang',"en"); 
    } 
    else 
    { 
    $this->session->set_userdata('lang',$lang); 
    } 

    redirect(base_url()); 
} 

이 makerequest_sp 기능 :

function makerequest_sp(serverPage, params, objID) 
{ 
    var xmlhttp_sp = getXMLHttp(); 
    //set url 
    var url = serverPage; 

    //set xml method to POST 
    xmlhttp_sp.open("POST", url, true); 
    //Send the proper header information along with the request 
    xmlhttp_sp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8"); 
    xmlhttp_sp.setRequestHeader("Content-length", params.length); 
    xmlhttp_sp.setRequestHeader("Connection", "close"); 

    xmlhttp_sp.onreadystatechange = function() {//Call a function when the state changes. 

     if(xmlhttp_sp.readyState == 4 && xmlhttp_sp.status == 200) { 
      document.getElementById(objID).innerHTML = xmlhttp_sp.responseText; 
     } 
    } 
    //send parameters 
    xmlhttp_sp.send(params);  

} 

하지만 전달 된 매개 변수에 액세스 할 수 없습니다.

+0

당신이에서 얻을 어떻게 'makerequest_sp'를 PHP의'change_lang' 함수에 추가 하시겠습니까? – Halcyon

답변

0

AJAX 요청을하고 있습니다. redirect으로 브라우저를 리디렉션하지 않는 이유가 궁금합니다.

AJAX 요청이 페이지가 아닌 리디렉션을 받고 있기 때문입니다.

대신 리디렉션 헤더를 보내는 당신은 페이지로 리디렉션해야하는 URL을 다시 전달할 수 있습니다, 또는 경우에 당신은 URL이 이미 당신은 그냥 바로 리디렉션 할 수 있습니다을 알고 :

makerequest_sp(/* .. */).done(function() { 
    document.location.href = url; 
}); 

// using Promise assumption for ajax request 
관련 문제