2012-06-05 3 views
0

jquery ajax로 양식 유효성 검사 자습서를 많이 보았습니다. 나는 모두가 단지 sucessfull form validation 만 말하고있는 것과 동일한 것을 발견했다. 서버 측 유효성 검사가 실패 할 경우 어떻게 오류를 표시 할 수 있는지 알아야합니다. 즉, 아약스없이 양식을 제출하면 양식에 오류 메시지가 다시 채워지고 입력 된 내용이 사용자에게 제공됩니다. 이 방법에서는 form_prep과 같은 훌륭한 php 함수를 사용합니다. 여기에보기 코드가 있습니다.jquery.load를 사용하여 codeigniter에서 ajax로 유효성 검사 실패 후 양식 채우기

<?php // Change the css classes to suit your needs  
$attributes = array('class' => '', 'id' => 'login'); 
echo form_open(SITE_URL.'user/insertUser', $attributes); 
?> 

<p> 
<label for="username">User Name <span class="required">*</span></label> 
<input type="text" name="username" maxlength="255" value="<?php echo form_prep($this->input->post('username'));?>" /> 
<span id="username"><?php echo form_error('username'); ?></span><br /> 
</p> 
<p> 
<label for="first_name">First Name <span class="required">*</span></label> 
<input type="text" name="first_name" maxlength="255" value="<?php echo form_prep($this->input->post('first_name'));?>" /> 
<span id="first_name"><?php echo form_error('first_name'); ?></span><br /> 
</p> 

<p> 
<label for="last_name">Last Name <span class="required">*</span></label> 
<input type="text" name="last_name" maxlength="255" value="<?php echo form_prep($this->input->post('last_name')); ?>" /> 
<span id="last_name"><?php echo form_error('last_name'); ?></span><br /> 
</p> 

<p> 
<label for="password">Password <span class="required">*</span></label> 
<input type="text" name="password" maxlength="255" value="<?php echo form_prep($this->input->post('password')); ?>" /> 
<span id = "password"><?php echo form_error('password'); ?></span><br /> 
</p> 

<p> 
<label for="email">Email <span class="required">*</span></label> 
<input type="text" name="email" maxlength="255" value="<?php echo form_prep($this->input->post('email')); ?>" /> 
<span id = "email"><?php echo form_error('email'); ?></span><br /> 
</p> 


<p> 
<?php echo form_submit('submit', 'Submit', 'id="submit"'); ?> 
</p> 

<?php echo form_close(); ?> 

현재의 보안 문제에 대한 도움을 사용 form_prep ($ this-> 입력 -> 포스트 ('이름')를) 볼 수 있습니다. 하지만 같은 양식을 사용하여 유효성 검사 실패시 ajax로 다시 채울 때 오류가 표시되거나 입력 상자가 채워지지 않습니다. 대신 이것이 처음으로로드되는 것처럼 폼을로드합니다. 아약스와 함께 사용하는 방법은 다음과 같습니다. 사업부 내가로드하고

$('#userform').load('<?php $this->load->view('user_form')?>'); 

$(function() 
{ 
    $('#login').submit(function() 
    { 
     $.ajax(
     { 
      type : 'POST', 
      data : $(this).serialize(), 
      url : $(this).attr('action'), 
      success : function(data) 
      { 
       if(data == 1) 
       { 
        // do something 
       } 
       else 
       { 
        $('#userform').load('<?php $this->load->view('user_form')?>'); 
       } 
      } 
     }); 
     return false; 
    }); 
}); 

이제 아약스 그리고 마지막으로 내 컨트롤러 형태로 먼저

function insertUser() 
{ 
    if($this->form_validation->run() == FALSE) 
    { 
     echo 0; 
    }else{ 
     echo 1; 
    } 
} 

답변

2

내가 무엇을 할 것이라고하는 것은 컨트롤러에서 양식을 렌더링 여기 대신

아약스 기능
echo 0; 

just do 

$html = $this->load->view('user_form',true); 
echo $html; 

및 귀하의 솔루션은 매우 중대하다 잘

else 
{ 
    $('#userform').html(data); 
} 
+0

else { $('#userform').load('<?php $this->load->view('user_form')?>'); } 

를 교체합니다. 내가 원했던 완벽한 물건! 다시 감사합니다 –

+0

당신은 환영합니다 :) –

관련 문제