2013-12-16 68 views
0

我正在嘗試在codeigniter的提交表單中使用ajax。我把它放在ajax調用的地方,bu不顯示驗證錯誤。我無法弄清楚爲什麼。請幫忙。如何通過ajax在codeigniter中驗證錯誤

我確實有一些回報,但他們什麼都不做。

if ($this->form_validation->run() == FALSE) 
    { 
    echo(json_encode("validate"=>FALSE)); 
    } 
    else 
    { 
    $this->load->model('adduser_model'); 
    $data['query']=$this->adduser_model->adduser(); 
    } 
} 

視圖代碼:

<script> 
    //CHECKS ONE FIELD AT A TIME 
    $(function(){ 
     $(".field").each(function(){ 
      $(this).keyup(function(){ 
      var id = $(this).attr("id"); //VALUE OF INPUT ID Ex: <input id="name"> 
      var v = $(this).val(); //INPUT TEXT VALUE 
      var data = id+"="+v; //DATA TO GO TO THE AJAX FILE Ex:(name=wcet) 

      $.ajax({ 
       type: "POST", 
       url: "prog/validate", //AJAX FILE 
       data: data+"&single=true", 
       success: function(e){ //"e" IS THE DATA FROM "validate.php" 
        $("span#"+id).html(e); //ECHOS DATA FROM "validate.php" NEXT TO THE  INPUT IF NEEDED 
       } 
      }); 
     }); 
    }); 
}); 
</script> 

<BODY> 
<?php $this->load->helper('form'); 
echo form_open('prog/validate'); ?> 
<tr><td align="right">Name: </td><td align="left"><input class="field" name="name"  id="name"> <span id="name"></span><br></td></tr> 
<tr><td align="right">email: </td><td align="left"><input class="field" name="email" id="email"> <span id="email"></span><br></td></tr> 

回答

0

如果have some returns這意味着該函數是成功的。即使您沒有預期的響應,只有在$ajax調用根本無法觸發(404,500錯誤)時,$this->form_validation->run()纔會爲false。

您也可以嘗試通過failure: function() {}捕捉錯誤,例如:

$.ajax({ 
    type: "POST", 
    url: "prog/validate", //AJAX FILE 
    data: data+"&single=true", 
    success: function(e){ //"e" IS THE DATA FROM "validate.php" 
     $("span#"+id).html(e); 
    }, 
    failure: function(e) { 
     // check against error messages 
    } 
});