CodeIgniter/Ajax - 重定向

cab*_*ret 0 ajax jquery redirect codeigniter

我有一个简单的登录表单,包含CodeIgniter和jQuery.考虑到重定向和最佳实践,我有几个问题.这是我的ajax调用代码:

    $(document).ready(function(){
    $("#btnLogin").click(function(e)    {
        $("p.error").hide();
        var email = $("#email").val();
        var password = $("#password").val();
        $(".loader").show();
        $.ajax({
            type: "POST",
            url: "/login/go",
            data: ({email: email, password: password}),
            success: function(data){
                $(".loader").hide();
                if(!data['status'])
                {
                    $("p.error").html(data['error']);
                    $("p.error").slideDown("fast");
                }
                else
                {
                    window.location = "site/index";
                }
            }
        });

        e.preventDefault();
    });
});
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我从我的控制器返回true或false(在data ['status']中)并从那里继续前进.但是,我不确定这是否window.location = ""是正确的方法.安全方面,将URL放在那里可以吗?没有先登录,人们无法访问网站/索引.登录正确设置CI会话和站点/索引检查.如果有人未登录,则会将其重定向到登录页面.我觉得在我的ajax调用中有这个URL有点奇怪,哈哈:(

我试着通过redirect("site/index")在设置会话后放入我的控制器来解决这个问题.一些代码所以这是有道理的:

    if ($this->form_validation->run() == FALSE)
    {
        // validation failed, returns false
    }
    else
    { 
                    // successful
                    // sets session and then i tried doing:
                    redirect("site/index");
    }
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.我真的不明白为什么它不起作用,所以如果有人能解释我会非常感激.非常感谢.

tri*_*rix 5

至于问题的第一部分:
你总是可以放入data['my_redirect']='site/index'控制器并将其返回data['status'],因此你的网站结构不会被"暴露"给其他人查看.

至于第二部分:
它没有工作,因为你有一个Ajax请求,并且在将数据返回到发出该请求的JavaScript之前,你无法在服务器上进行重定向.