Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery CodeIgniter/Ajax-重定向_Jquery_Ajax_Codeigniter_Redirect - Fatal编程技术网

Jquery CodeIgniter/Ajax-重定向

Jquery CodeIgniter/Ajax-重定向,jquery,ajax,codeigniter,redirect,Jquery,Ajax,Codeigniter,Redirect,我有一个带有CodeIgniter和jQuery的简单登录表单。考虑到重定向和最佳实践,我有几个问题。以下是我的ajax调用代码: $(document).ready(function(){ $("#btnLogin").click(function(e) { $("p.error").hide(); var email = $("#email").val(); var password = $("#password").va

我有一个带有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();
    });
});
如您所见,我在数据['status']中从我的控制器返回true或false,然后继续前进。但是,我不确定window.location=是否是正确的方法。安全方面,可以把URL放在那里吗? 未先登录,用户无法访问站点/索引。登录可正确设置CI会话,并对其进行站点/索引检查。如果有人没有登录,他们将被重定向到登录页面。我只是觉得在我的ajax调用中使用这个URL有点奇怪,哈哈:

我试图通过在设置会话后将重定向站点/索引放入控制器来解决这个问题。一些代码使其有意义:

    if ($this->form_validation->run() == FALSE)
    {
        // validation failed, returns false
    }
    else
    { 
                    // successful
                    // sets session and then i tried doing:
                    redirect("site/index");
    }
然而,这不起作用。我真的不明白为什么它不起作用,所以如果有人能解释一下,我将非常感激。非常感谢。

关于你问题的第一部分: 您可以始终将数据['my_redirect']='site/index'放在控制器中,并将其与数据['status']一起返回,这样您的站点结构就不会“暴露”给其他人查看。 关于第二部分:
它不起作用,因为您有一个Ajax请求,在将数据返回到发出该请求的JavaScript之前,您无法在服务器上进行重定向。

cabaret-不确定您是否仍然存在此问题,但在搜索时,我发现了此问题,然后最终找到了一个合适的解决方案,所以我想我应该发布链接到我所做的事情。我在CI论坛上发布了代码和说明:


希望这有帮助

我将通读该线程,看看是否可以更新自己的解决方案以改进它。因为我使用的是AJAX,所以我只是从控制器返回一个$feedback数组,其中包含一个名为“redirect”的键。这个键的内容是重定向应该去的地方。在我的AJAX成功函数中,我然后执行window.location=data['redirect'];这似乎很有效。感谢您访问此网站并发布链接-@特里克斯,你能解释一下第二部分吗?更改URL需要返回哪些数据?如果您所指的是卡巴莱酒店对d2burke答案的评论,请阅读