2013-12-16 98 views
0

我试图将参数传递到一个URL,并让他们到控制器的功能:在锚onclick 我传递的值的JavaScript函数。如何将参数传递给网址

这是的onclick锚:

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

,这是javascript函数:

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,或者如果你知道网址已经可以只是重新定位的时候了:

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

// using Promise assumption for ajax request