需要手动页面刷新才能显示登录后的用户名

时间:2015-01-15 17:09:13

标签: javascript php jquery twitter-bootstrap codeigniter

我在Apache / 2.4.7(Ubuntu)服务器上运行的网站没有任何错误,我在其上安装了一个使用CodeIgniter 2.1.4和Bootstrap的PHP脚本。

在页面顶部,登录框用作模式弹出窗口,但当有人尝试登录时,脚本会重新加载页面,但不会显示登录的用户名。只有在手动刷新页面后才能用户看到他们的名字。

我一直在尝试搜索一个多月的解决方案,包括重新安装服务器和脚本,更改.htaccess文件,停止memcached等。

我联系了脚本的所有者和CodeIgniter的支持,他们告诉我这可能是一个过载的Ajax问题。

由于我的脚本主要是Ajax并且除了登录之外它工作正常,是否可以以不同的方式进行登录?我怎样才能正确整合脚本?

这是我的登录功能(assets/js/custom.js):

function login() {
  var email = $('#loginForm [name="email"]').val();
  var pwd1 = $('#loginForm [name="password1"]').val();

  if (isEmpty(pwd1) || isEmpty(email)) {
    alert(msg_required_fields);
    return false;
  }

  $.post(base_url + 'main/login', { "email": email, "pwd1": pwd1 }, function(data, textStatus, xhr) {
    if (data.error == 1) {
      alert(data.msg);
    }

    if (data.error == 0) {
      document.location = base_url + 'main/reload';
    }
  }, "json");
}

更新

我对退出功能也有同样的问题:

    function logout()
{
    $this->admin->deleteTable('online',array('iduser' => $this->session->userdata('id')));
    $this->session->unset_userdata('id');
    $this->session->sess_destroy();
    if( $this->session->userdata('facebook') == '1')
        redirect(base_url(),"main/facebook/logout");
    else
        redirect(base_url()."main/reload","refresh");
}

1 个答案:

答案 0 :(得分:1)

逻辑上document.location对象应该是只读的(因为你无法更改文档的URL;更改URL会加载新文档),所以为了安全起见,你应该使用window.location .href是否要设置URL。

所以你应该尝试使用window.location.href What is the difference between document.location.href and document.location?