フォームに空の入力を残したときにエラーが表示されない理由を理解できません。私は初めてフォームの検証を使用しています.AJAXでフォーム検証を送信する方法については本当に混乱しています。Formigniterがフォームの検証でajax呼び出しでvalidation_errors()を表示しない
私は012ignのパスにあるform_validation.php
というファイルをcodeigniterのWebページで説明されているように使用しています。私のアプリケーションのすべての入力の規則の検証を設定します。フォームヘルパーとform_validation
ライブラリをautoload.php
に設定しました。私はvalidation_errors()
を介してエラーを印刷しようとするフォームビューで、何も起こりません。ここで
私のコードです:
FORM
<?php echo form_open(null,array("class"=>"col s12","id"=>"enter_form"));?>
<div class="row">
<div class="col s4">
<span style="position:static;" class="badge yellow">Importante!!!</span>
<blockquote>
Si es primera vez que ingresas a votar, debes ingresar un correo y una contraseña, que te identifique como usuario.
Si ya te encuentras registrado, ingresa los mismos datos usados la primera vez que ingresaste, para realizar tu inicio de sesion.
</blockquote>
</div>
<div class="col s8">
<?php
$errors= validation_errors('<li>','</li>');
if($errors != ""){
?>
<div class="red lighten-2">
<ul>
<?php echo $errors;?>
</ul>
</div>
<?php
}
?>
<div class="row">
<div class="input-field col s6 offset-s3">
<input id="enter_email" type="email" name="enter_email" class="validate">
<label for="enter_email">Correo</label>
</div>
</div>
<div class="row">
<div class="input-field col s6 offset-s3">
<input id="u" name="enter_password" type="password" class="validate">
<label for="enter_password">Contraseña</label>
</div>
</div>
<input type="hidden" name="update_politic_hide" id="update_politic_hdn" value="">
</div>
</div>
<div class="modal-footer" style="position:fixed !important;">
<div class="col s6 push-s5">
<button class="center-align btn waves-effect waves-light light-blue darken-4" type="submit" name="action" id="enter_submit">A votar!</button>
</div>
</div>
<?php echo form_close();?>
CONTROLLER
public function verification()
{
$this->load->model("votes");
if ($this->input->is_ajax_request()) {
if ($this->form_validation->run('enter_form')) {
//some code
}
//else should display validation_errors() on form view
$params["email"] = $this->input->post('enter_email');
$params["password"] = $this->input->post('enter_password');
$result = $this->votes->verification($params);
if ($result==null) {
$params["status"]= 0;
$success= $this->votes->user_record($params);
return $success;
}
else {
$params["status"]= 1;
$success= $this->votes->user_record($params);
return $success;
}
}
}
JAVASCRIPT
$("#enter_form").submit(function(event) {
event.preventDefault();
var data = $(this).serialize();
alert(data);
$.post(baseurl+"votos/verification",
data,
function(data) {
if (data == 1) {
alert("registrado");
}
else {
alert("No estabas registrado, ahora si");
}
}
);
});
FORM_VALIDATION.PHP(入力規則)
'enter_form'
=> array(
array('field' => 'enter_email','label' => 'Email','rules' => 'required|is_string|valid_email'),
array('field' => 'enter_password','label' => 'Password','rules' => 'required|is_string'),
),
私は定義されていませんが、アラートでデータを印刷すると、すべてのメッセージが表示されます。=(ヘルプpls !!本当にnoobです。 jquery –
jsonでエンコードされたレスポンスが得られるので、デコードする必要があります。 data = $ .parseJSON(data);また、検証が成功するとレスポンスをエンコードする必要があります。 – Alex