- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我快要疯了,几天来试图弄清楚为什么重定向有效在 php 中,也在 javascript 中,在某些 Controller 中,有些不在 Controller 中它们是相同的代码和相同的 View html 代码同样的 Ajax 相同的形式我尝试使用 location href 和 php 重定向它不工作函数中的所有方法都起作用,只有重定向或 json 编码不起作用在 Firebug 的控制台中,它显示“帖子”发生了显示错误 TypeError: data is null
顺便说一句,只有当我输入正确的用户名和密码时才会发生这种情况当我写错信息时出现错误消息用户名或密码无效并在控制台中{“st”:0,“msg”:“无效的用户名或密码”}
Controller 不工作
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class signin_admin extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('form_validation');
$this->load->model('admin_model');
}
public function index() {
if ($this->session->userdata('logged_in')) {
redirect('home');
} else {
$this->load->view('signin_admin_view');
}
}
public function do_login() {
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|min_length[4]|max_length[20]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|min_length[4]|max_length[20]');
if ($this->form_validation->run() == FALSE) {
$output = array('st' => 0, 'msg' => validation_errors());
echo json_encode($output);
} else {
$data = array(
'username' => $this->input->post('username'),
'password' => $this->input->post('password')
);
$result = $this->admin_model->login($data);
if ($result == TRUE) {
$username = $this->input->post('username');
$result = $this->admin_model->read_user_information($username);
if ($result != false) {
$session_data = array('user_id' => $result[0]->user_id,);
$this->session->set_userdata('logged_in_admin', $session_data);
$output = array('st' => 1);
echo json_encode($output);
}
} else {
$output = array('st' => 0, 'msg' => "Invalid Username or Password");
echo json_encode($output);
}
}
}
}
工作 Controller
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class signin extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('form_validation');
$this->load->model('user_model');
}
public function index() {
if ($this->session->userdata('logged_in')) {
redirect('home');
} else {
$this->load->view('signin_view');
}
}
public function do_login() {
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|min_length[4]|max_length[20]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|min_length[4]|max_length[20]');
if ($this->form_validation->run() == FALSE) {
$output = array('st' => 0, 'msg' => validation_errors());
echo json_encode($output);
} else {
$data = array(
'username' => $this->input->post('username'),
'password' => $this->input->post('password')
);
$result = $this->user_model->login($data);
if ($result == TRUE) {
$username = $this->input->post('username');
$result = $this->user_model->read_user_information($username);
if ($result != false) {
$session_data = array('user_id' => $result[0]->user_id, 'username' => $result[0]->username);
$this->session->set_userdata('logged_in', $session_data);
$output = array('st' => 1);
echo json_encode($output);
}
} else {
$output = array('st' => 0, 'msg' => "Invalid Username or Password");
echo json_encode($output);
}
}
}
}
工作 Controller 和不工作 Controller 的ajax,不同的是location.href
<script src="public/js/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#frm').submit(function(event){
$.post(
$('#frm').attr('action'),
$('#frm').serialize(),
function(data)
{
if (data.st == 0)
{
$('#validation-error').html(data.msg);
}
else if (data.st == 1)
{
window.location.href = "<?php echo site_url('home'); ?>";
}
},
'json'
);
return false;
});
});
</script>
管理员模型(不工作重定向)
public function login($data) {
$condition = "username =" . "'" . $data['username'] . "' AND " . "password =" . "'" . $data['password'] . "'";
$this->db->select('*');
$this->db->from('admins');
$this->db->where($condition);
$this->db->limit(1);
$query = $this->db->get();
if ($query->num_rows() == 1) {
return true;
} else {
return false;
}
}
读取用户模型中的用户信息函数(工作中)
public function read_user_information_profile($user_id) {
$condition = "user_id =" . "'" . $user_id . "'";
$this->db->select('*');
$this->db->from('users');
$this->db->where($condition);
$this->db->limit(1);
$query = $this->db->get();
if ($query->num_rows() == 1) {
return $query->result();
} else {
return false;
}
}
管理模型中读取用户信息功能(不工作 Controller )
public function read_user_information($user_id) {
$condition = "user_id =" . "'" . $user_id . "'";
$this->db->select('*');
$this->db->from('admins');
$this->db->where($condition);
$this->db->limit(1);
$query = $this->db->get();
if ($query->num_rows() == 1) {
return $query->result();
} else {
return false;
}
}
最佳答案
您尚未显示 user_model->read_user_information($username) 的代码;
但是在看到你的 Controller 代码后,当read_user_information($username)返回false时,没有错误的回显。这就是 TypeError: data is null 的可能原因。
要找到确切的错误,你必须修改 Controller 和jquery,
Controller 中修改后的 do_login() fn:
public function do_login() {
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|min_length[4]|max_length[20]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|min_length[4]|max_length[20]');
if ($this->form_validation->run() == FALSE) {
$output = array('st' => 0, 'msg' => validation_errors());
echo json_encode($output);
} else {
$data = array(
'username' => $this->input->post('username'),
'password' => $this->input->post('password')
);
$result = $this->user_model->login($data);
if ($result == TRUE) {
$username = $this->input->post('username');
$result = $this->user_model->read_user_information($username);
if ($result != false) {
$session_data = array('user_id' => $result[0]->user_id, 'username' => $result[0]->username);
$this->session->set_userdata('logged_in', $session_data);
$output = array('st' => 1);
echo json_encode($output);
} else {
$output = array('st' => 0, 'msg' => "Failed: read_user_information");
echo json_encode($output);
}
} else {
$output = array('st' => 0, 'msg' => "Invalid Username or Password");
echo json_encode($output);
}
}
}
和 Jquery:
<script src="public/js/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#frm').submit(function(event){
$.post(
$('#frm').attr('action'),
$('#frm').serialize(),
function(retdata)
{
// console.log(retdata);
data = JSON.parse(retdata);
if (data.st == 0)
{
$('#validation-error').html(data.msg);
}
else if (data.st == 1)
{
window.location.href = "<?php echo site_url('home'); ?>";
}
}
);
return false;
});
});
</script>
如果出现任何错误,只需取消注释 console.log(retdata);从jquery查看真实的输出,你就可以找出问题所在。
关于javascript - 重定向在某些 Controller 中有效,而在某些 Controller 中无效(相同代码) php 以及 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33708248/
我尝试理解[c代码 -> 汇编]代码 void node::Check( data & _data1, vector& _data2) { -> push ebp -> mov ebp,esp ->
我需要在当前表单(代码)的上下文中运行文本文件中的代码。其中一项要求是让代码创建新控件并将其添加到当前窗体。 例如,在Form1.cs中: using System.Windows.Forms; ..
我有此 C++ 代码并将其转换为 C# (.net Framework 4) 代码。有没有人给我一些关于 malloc、free 和 sprintf 方法的提示? int monate = ee; d
我的网络服务器代码有问题 #include #include #include #include #include #include #include int
给定以下 html 代码,将列表中的第三个元素(即“美丽”一词)以斜体显示的 CSS 代码是什么?当然,我可以给这个元素一个 id 或一个 class,但 html 代码必须保持不变。谢谢
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我试图制作一个宏来避免重复代码和注释。 我试过这个: #define GrowOnPage(any Page, any Component) Component.Width := Page.Surfa
我正在尝试将我的旧 C++ 代码“翻译”成头条新闻所暗示的 C# 代码。问题是我是 C# 中的新手,并不是所有的东西都像 C++ 中那样。在 C++ 中这些解决方案运行良好,但在 C# 中只是不能。我
在 Windows 10 上工作,R 语言的格式化程序似乎没有在 Visual Studio Code 中完成它的工作。我试过R support for Visual Studio Code和 R-T
我正在处理一些报告(计数),我必须获取不同参数的计数。非常简单但乏味。 一个参数的示例查询: qCountsEmployee = ( "select count(*) from %s wher
最近几天我尝试从 d00m 调试网络错误。我开始用尽想法/线索,我希望其他 SO 用户拥有可能有用的宝贵经验。我希望能够提供所有相关信息,但我个人无法控制服务器环境。 整个事情始于用户注意到我们应用程
我有一个 app.js 文件,其中包含如下 dojo amd 模式代码: require(["dojo/dom", ..], function(dom){ dom.byId('someId').i
我对“-gencode”语句中的“code=sm_X”选项有点困惑。 一个例子:NVCC 编译器选项有什么作用 -gencode arch=compute_13,code=sm_13 嵌入库中? 只有
我为我的表格使用 X-editable 框架。 但是我有一些问题。 $(document).ready(function() { $('.access').editable({
我一直在通过本教程学习 flask/python http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-wo
我想将 Vim 和 EMACS 用于 CNC、G 代码和 M 代码。 Vim 或 EMACS 是否有任何语法或模式来处理这种类型的代码? 最佳答案 一些快速搜索使我找到了 this vim 和 thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve this
这个问题在这里已经有了答案: Enabling markdown highlighting in Vim (5 个回答) 6年前关闭。 当我在 Vim 中编辑包含 Markdown 代码的 READM
我正在 Swift3 iOS 中开发视频应用程序。基本上我必须将视频 Assets 和音频与淡入淡出效果合并为一个并将其保存到 iPhone 画廊。为此,我使用以下方法: private func d
pipeline { agent any stages { stage('Build') { steps { e
我是一名优秀的程序员,十分优秀!