【问题标题】:Retrieving data from a form (Codeigniter, AJAX)从表单中检索数据(Codeigniter、AJAX)
【发布时间】:2020-03-29 10:52:44
【问题描述】:

我的表格有问题。 我需要做一个登录表单,但我无法检索登录数据。

这是我的视图 login.php:

 <?php defined('BASEPATH') OR exit('No direct script access allowed');
 ?>
 <div class="main">
   <div class="container">
      <div class="card card-container">            
        <h1>Control de Asistencia</h1>
        <form id="login" class="form-signin" method="post" action="<?php echo 
base_url('login/ingresar'); ?>">
            <span id="reauth-email" class="reauth-email"></span>
            <input type="email" name="email" id="inputEmail" class="form-control" 
placeholder="Usuario" required autofocus>
            <input type="password" name="password" id="inputPassword" class="form-control" 
placeholder="Clave" required>   
            <br/>
            <button class="center btn btn-raised btn-info btn-lg" type="submit">Ingresar</button>
            <div class="login__rpta"></div>
        </form><!-- /form -->            
    </div><!-- /card-container -->
  </div><!-- /container -->
</div><!--main-->

控制器Login.php:

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

class Login extends CI_Controller {

  public function __construct(){
    parent::__construct();
    $this->load->model('Login_model');
}

function ingresar(){

    $email = $this->input->post("email");
    $password= md5($this->input->post("password"));
    $resp = $this->Login_model->login($email, $password);
    if($resp){
        $data = [
            "id" => $resp->id,
            "name" => $resp->nombre,
            "nivel" => $resp->nivel,
            "login" => TRUE
        ];

        $this->session->set_userdata($data);
    }
    else{
        echo "errorxxx";
    }
  }

   function cerrar(){
     $this->session->sess_destroy();
     redirect(site_url());
  }
}

Javascript custom.js:

$(function () {
 $.material.init();    

 $("#login").submit(function(event){
    event.preventDefault();
    $.ajax({
        url:$(this).attr("action"),
        type:$(this).attr("method"),
        data:$(this).serialize(),
        success:function(resp){
            if(resp==="error"){
                $('.login__rpta').html("Usuario o clave incorrectos");
                console.log(resp);
            }
            else{
                window.location.href = base_url + "welcome/home";
                console.log(resp);
            }
        }
    });
});
------ more code ------
});

已编辑:这是模型 Login_model.php

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

class Login_model extends CI_Model {

function login($email, $password){

    $this->load->database();
    $this->load->dbutil();

    // check connection details
    if( !$this->dbutil->database_exists('myDatabase')) {
        echo 'Not connected to a database, or database not exists';
        } else {
        echo 'Conectado';
    }

    $this->db->where("email", $email);
    $this->db->where("password", $password);
    $resultados = $this->db->get("profesores");
    if ($resultados->num_rows()>0) {
        return $resultados->row();
    }
    else{
        return false;
    }
  }
}

custom.js 中的 console.log 向我显示视图(表单)而不是登录参数,并将我重定向到 404 错误页面...请问我做错了什么? 这不是我的代码(我只是想修复它),我看不到问题!

【问题讨论】:

  • 在你的js代码中,你的变量base_url是怎么定义的?
  • 在config.php中
  • 好的,但是在window.location.href = base_url + "welcome/home"; 行中它持有哪个值,是否定义了?
  • 你是对的...console.log(base_url) 只显示 https://

标签: javascript php ajax forms codeigniter


【解决方案1】:

你的 base_url 是在 codeigniter 的 config.php 中定义的,例如:

$config['base_url'] =  'http://or.org/';

这并不意味着您可以简单地使用 base_url 作为 javascript 中的变量希望获得该值。

但你可以像这样回应它:

window.location.href = '<?php echo base_url()?>' + 'welcome/home'

或者只使用相对路径

window.location.href = '/welcome/home'

【讨论】:

  • 它知道将我重定向到重复的网址:blabla.cccccc.com/blabla.ccccc.com/welcome/home
  • check your $config['base_url']
  • 我的 config.php 有 $allowed_domains = array('blabla.ccccc.com','blabla.cccccdea.edu'); $default_domain = 'blabla.ccccc.com'; if (in_array($_SERVER['HTTP_HOST'], $allowed_domains, TRUE)){ $config['base_url'] = 'https://'.$_SERVER['HTTP_HOST']; }else{ $config['base_url'] = 'https://'.$default_domain; }
  • 我将提出 2 个不同的问题,并且更具体一些,谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多