-1

我在 CI 中的 ajax 加载程序有问题。

这是我到目前为止所尝试的:

        <script type="application/javascript">
    $(document).ready(function() {
      $('#submit').click(function() {
        var form_data = {
        username : $('.username').val(),
        password : $('.password').val(),
      };
      var loader = $('<img/>', {
        'src':'assets/img/ajax-loader.gif',
        'id':'message'
      });
      loader.insertAfter($(this));

      //.removeClass().addClass('loader').html('<img src="assets/img/ajax-loader.gif">').fadeIn(1000);
      $.ajax({ //
        url: "<?php echo site_url('login/ajax_check'); ?>",
        type: 'POST',
        async : false,
        data: form_data,
        success: function(msg) {
          $('#ajax_loader').remove();
          $('#message').html(msg);
        }
      });
        return false;
      });
    });
  </script>

c_login.php 控制器

  function ajax_check() {
            //if($this->input->post('ajax') == '1') {
            if($this->input->is_ajax_request()){
                $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) {
                        echo 'login successful';
                        //echo '<img src="assets/img/loader-bar.gif"> Hello!';
                        //$this->load->view('welcome');
                    } else {
                        echo 'unknown user'; //
                        //echo ' <img src="assets/img/icon_error.gif"> Username or password not valid';
                    }
                }
            }
        }

更新:

问题是,它只是无限显示加载器。

我想要做的是,如果用户是有效的,将显示 loader.gif 然后重定向到主页,否则将显示用户名或密码不正确。我的代码有什么问题?有任何想法吗?谢谢。

4

1 回答 1

1

似乎您将加载器命名为“消息”而不是创建“消息”新元素并将加载器命名为“ajax_loader”。

var loader = $('<img/>', {
    'src':'assets/img/ajax-loader.gif',
    'id':'ajax_loader'
});
var message = ...
    ...
    'id':'message'

.

success: function(msg) {
    $('#ajax_loader').remove();
    $('#message').html(msg);
}
于 2013-11-09T06:21:02.253 回答