如何将参数传递到url

how to pass parameters to url

本文关键字:url 参数传递      更新时间:2023-09-26

我正试图将参数传递到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());
}

这个makerequestrongp函数:

  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);    
}

但我无法访问传递的参数。

您正在执行AJAX请求。我猜你想知道redirect为什么不让浏览器重定向?

这是因为AJAX请求得到的是重定向,而不是页面。

不发送重定向标头,您可以传回页面应该重定向到的URL,或者如果您已经知道URL,您可以立即重定向:

makerequest_sp(/* .. */).done(function () {
    document.location.href = url;
});
// using Promise assumption for ajax request