将数据从视图传递到ci中的控制器时出错

时间:2017-04-22 12:18:05

标签: php ajax codeigniter

我正面临一个内部服务器错误:500,当我尝试将值从我的视图传递给代码点火器控制器。我试图通过ajax脚本传递它。我不知道如何调试并通过浏览器查看控制器中发生的情况。请帮助我!我有点卡住..如果你让我小提琴,我会很棒的。

这是我的观看代码:

<!DOCTYPE HTML>
<html lang="en-US">
<head>

<meta charset="UTF-8">
<title>login</title>
<link rel="stylesheet" href="<?php echo base_url()?>assets/login/style.css" />
<link href='http://fonts.googleapis.com/css?family=Oleo+Script' rel='stylesheet' type='text/css'>
<script type="text/javascript" src="<?php echo base_url()?>assets/login/jquery-1.7.min.js"></script>
<script type="text/javascript">
javascript:window.history.forward(1);
$(document).ready(function(){
    $("#logincheck").click(function(){
        var action = $("#lg-form").attr('action'); 
        var username = $("#username").val();
        var password = $("#password").val();
        //alert($("#username").val());
        $.ajax({
            type: "POST",
            url: action,
            data: {u_name : username,pwd : password},
            success: function(response)
            { //$('#message').html(response).fadeIn('slow');
                if(response == "success")
                    location.href = "<?php echo site_url();?>/Dashboard/index";
                else
                $("#message").html('<p class="error">ERROR: Invalid username and/or password.</p>');
            }   
        });
        return false;
    });
});
</script>
</head>
<body>

<div class="lg-container">
<h1>Admin Area</h1>

<form action="<?php echo site_url('login/login_check');?>" id="lg-form" name="lg-form" method="post">

        <div>
            <label for="username">Username:</label>
            <input type="text" name="username" id="username" placeholder="username"/>
        </div>

        <div>
            <label for="password">Password:</label>
            <input type="password" name="password" id="password" placeholder="password" />
        </div>

        <div style="text-align:center;">                
            <button type="submit" id="logincheck">Login</button>
        </div>
        </form>
    <div id="message"></div>
</div>
</body>
</html>

我的控制器代码是:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Login extends CI_Controller {
public function index()
    {
        $this->load->view('login_page/login');
    }
public function login_check()
    {   print_r($this->input->post());exit;
        $res['username'] = $this->input->get('u_name');
        $res['password'] = md5($this->input->get('pwd'));

        $this->load->model('Login_m');
        $i=$this->Login_m->login_data($res);
        if($i ==1 )
        {
            echo "success";
        }
    }
}

我的模型代码是:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login_m extends CI_Model
    {

    function login_data($data)
        { //print_r($data);exit;

            $query =$this->db->query('select e.* from ins_entity e where e.entity_uname =? and e.entity_pwd =?',array($data['username'],$data['password']))->row_array();
            if(count($query) > 0)
            {   

                        $newdata = array(
                        'id' => $query['entity_id'],
                        'name' => $query['entity_name'],
                        'uname' => $query['entity_uname']);
                        $this->session->set_userdata($newdata);                 
                         return 1;
            }
            else
             {
                //echo "Invalid Credentials at present";
                return 0;

             }
        }   

    }


?>

2 个答案:

答案 0 :(得分:0)

试试这个,而不是使用

var action = $("#lg-form").attr('action');  // YOU dont need this
var username = $("#username").val();
var password = $("#password").val();

改为使用

var data = $("#lg-form").serialize() //should be logincheck

你有一个奇怪的命名约定。表单的ID应该更能描述表单。

这不符合你的表格

$("#logincheck").click(function(){

在表单上,​​它表示ID为lg-form。该ID也应该在表单上登录检查

答案 1 :(得分:0)

我刚刚找到了问题的解决方案。我在编程中犯了两个错误

  1. 最初,我无法在我的Chrome浏览器中进行调试。因此,对于我通过“按F12”进行调试,我进入“网络”选项卡并单击“全部”选项。其他'XHR'对我来说已经足够了。
  2. 在我的ci里面的autoload.php中,我忘了添加'数据库','会话'助手。

    在我纠正了这两件事之后,我没有得到内部服务器错误:500,当我尝试将值从我的视图传递给代码点火器控制器。感谢所有帮助过我的人!