1

CodeIgniter Ajax が機能しません。

これは私がこれまでに試したことです。

v_login.php

         <script type="application/javascript">
    $(document).ready(function() {
      $('#submit').click(function() {
        var form_data = {
        username : $('#username').val(),
        password : $('#password').val(),
        ajax : '1'
      };
      $.ajax({
        url: "<?php echo site_url('c_login/ajax_check'); ?>",
        type: 'POST',
        async : false,
        data: form_data,
        success: function(msg) {
          $('#message').html(msg);
        }
      });
        return false;
      });
    });
  </script>

  <div class="container">
     <div class="jumbotron">

     <?php 
     $attributes = array('class' => 'form-signin');
     echo form_open('c_login', $attributes); ?>
        <h2 class="form-signin-heading">VMS Login System</h2>
          <input type="username" name="username" id="username" class="form-control" placeholder="Username" required autofocus>
          <input type="password" name="password" class="form-control" placeholder="Password" required>
          <input class="btn btn-primary" type="submit" id="submit" value="Login">
          <input class="btn btn-primary" type="reset" value="Cancel">
       <?php echo form_close(); ?>
        <div id="message">
        </div>

     </div>
  </div> 

C_login.php

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

    class C_login extends CI_Controller {

        function __construct() {

            parent::__construct();

            $this->load->library('form_validation');
            $this->load->helper('url');

        }
        function index() {
            $this->load->view('include/header');
            $this->load->view('v_login');
            $this->load->view('include/footer');
        }

        function ajax_check() {
            if($this->input->post('ajax') == '1') {
                $this->form_validation->set_rules('username', 'username', 'trim|required|xss_clean');
                $this->form_validation->set_rules('password', 'password', 'trim|required|xss_clean');
                $this->form_validation->set_message('required', 'Please fill in the fields');
            if($this->form_validation->run() == FALSE) {
                echo validation_errors();
            } else {
                $this->load->model('m_access');
                $user = $this->m_access->check_user($this->input->post('username'),$this->input->post('password'));
            if($user == '1') {
                echo 'login successful';
            } else {
                echo 'unknown user';
            }
            }
            }
        }
    }
    /* End of file c_login.php */
    /* Location: ./application/controllers/c_login.php */

m_access.php

   <?
    class M_access extends CI_Model {
        public function check_user($username,$password) {
            $this->query = $this->db->select('COUNT(*)')->from('users')->where(array('username'=>$username,'password'=>$password))->limit(1)->get();
            return $this->query->row_array();
        }
    }

何が悪いのかわかりません。すでに config.php とルートを設定しています。しかし、それはまったく機能していません。何か案は?助けていただければ幸いです。ありがとう。

4

2 に答える 2

0

私の意見では、ajax呼び出しを試す前に、codeigniterフォーム検証ヘルパーを詳しく調べる必要があるというよりも、ファイル名が「C」で、それを「c」で呼び出すため、呼び出しパスによるエラー404

サーバー側で完全に実行したら、まだajaxを使用して検証したい場合は、元のサーバー側の検証機能に沿って、この目的のためだけに別の機能をWebサービスとして作成します。

     function ajax_check(){
     $username_check=true;
     //your code goes here to check if username unique or not and result assigned to $username_check 
     if(!$username_check){
       echo json_encode('fail');
       return;
       }
     echo json_encode('success');
     }
于 2013-11-08T18:46:19.917 に答える