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)
但是,这不起作用.我真的不明白为什么它不起作用,所以如果有人能解释我会非常感激.非常感谢.
至于问题的第一部分:
你总是可以放入data['my_redirect']='site/index'控制器并将其返回data['status'],因此你的网站结构不会被"暴露"给其他人查看.
至于第二部分:
它没有工作,因为你有一个Ajax请求,并且在将数据返回到发出该请求的JavaScript之前,你无法在服务器上进行重定向.
| 归档时间: |
|
| 查看次数: |
9053 次 |
| 最近记录: |