我正在尝试将参数传递给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 :(得分:0)
你正在做一个AJAX请求。我猜你在想为什么redirect
没有使浏览器重定向?
这是因为AJAX请求正在获取重定向,而不是页面。
您可以传回页面应重定向到的网址,而不是发送重定向标头,或者如果您知道该网址,您可以立即重定向:
makerequest_sp(/* .. */).done(function () {
document.location.href = url;
});
// using Promise assumption for ajax request