Jquery CodeIgniter/Ajax-重定向
我有一个带有CodeIgniter和jQuery的简单登录表单。考虑到重定向和最佳实践,我有几个问题。以下是我的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
$(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答案的评论,请阅读