2013-04-05 85 views
0

我想通過codeigniter驗證一些領域witj ajax,但不能完全弄清楚它是如何「正確」。codeigniter阿賈克斯form_validation(與jquery)

我的ajax:

var timeout = null; 

$(document).ready(function(){ 

    $('.new-user-box input').each(function(){ 

     var key = $(this).attr('name'); 

     $(this).on("keyup", function() { 
      var value = $(this).val(); 

      if(value=="") { 
       return false; 
      } 

      var json = {}; 
      json[key] = value; 
      json['ajax'] = '1'; 

      if (timeout) { 
       clearTimeout(timeout); 
      } 
      timeout = setTimeout(function() { 
       $.ajax({ 
       url: 'auth/ajax_validate', 
       type: 'post', 
       data: json, 
       success: function(data) { 
        console.log(data); 
       } 
       }) 
      }, 1000) 
     }); 

    }) 

}) 

這基本上讓我所有的輸入框發送它們的價值在KEYUP(1秒後)。

我的PHP(只是從用戶名測試片段):

<?php 

    function ajax_validate() 
    { 

     // Test if the method is called by ajax and validate the input field 
     if($this->input->post('ajax')) 
     { 
      if($this->input->post('username')) 
      { 
       if($this->form_validation->set_rules('username', 'Brugernavn', 'required|trim|min_length[1]|max_length[20]|is_unique[users.username]|xss_clean') && !$this->form_validation->run()) 
       { 
        $validates = 0; 
       } 
       else { 
        $validates = 1; 
        $error = ""; 
       } 
       $response = array($validates,$form_error('username')); 
       echo json_encode($response); 
       exit; 
      } 
     } 

    } 

?> 

我接收的響應是一個PHP錯誤:

消息:未定義變量:form_error

致命錯誤:功能名稱必須是線路401上的\ PATH TO CODEIGNITER \ application \ modules \ auth \ controllers \ auth.php中的字符串

希望有人有線索如何解決此問題,或做另一種方式。先謝謝你。

回答

6

取出$之前的「form_error」。

$response = array($validates,$form_error('username')); 

$response = array($validates,form_error('username')); 
+1

燁燁燁燁 – SpYk3HH 2013-04-05 17:53:03

+0

@ SpYk3HH是啊,我喜歡它': D' – Jai 2013-04-05 17:54:21

+0

哇,不敢相信我現在覺得多麼令人難以置信的愚蠢,我沒有看到。謝謝! – jah 2013-04-05 18:06:29