如何将参数传递给url

时间:2013-12-16 17:04:05

标签: javascript php codeigniter session parameters

我正在尝试将参数传递给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);    

}

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

1 个答案:

答案 0 :(得分:0)

你正在做一个AJAX请求。我猜你在想为什么redirect没有使浏览器重定向?

这是因为AJAX请求正在获取重定向,而不是页面。

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

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

// using Promise assumption for ajax request