2014-01-20 2 views
0

Я хочу проверить форму без обновления страницы с помощью метода jQuery .post().Как использовать метод post() jquery с codeigniter form_validation

Я использую codeigniter для проверки. Не могли бы вы рассказать мне, как все исправить? Я нахожу это довольно запутанным ...

Вот код JQuery:

$(document).ready(function(){ 
    $(".form_errors").hide(); 
    $("#send").on("click",function(){ //the submit button has the id="send" 
    $(".form_errors").hide(); //these are <p> for each input to show the error 
    var user=$("input.box"); 
    var data={}; 
    var names=$("input.box").attr("name"); 
    for(i=0;i<user.length;i++){ 
     name=names[i]; 
     value=user[i].val(); 
     data.name=value; 
    } 
    $.post('ksite/account', 
      data, 
      function(result){ 
      $("div.answer").html(result); 
      for(i=0;i<user.length;i++){ 
       error_message=<?php echo form_error("?>names[i]<?php ");?>; 
       $("p#error_"+names[i]+".form_errors").html(error_message).show(); 
      } 
      } 
      return false;}); 
    }); 

form_error является функцией CodeIgniter. (Я полагаю, кто-то, кто использовал ci, знает).

Форма:

<p id="error_user" class="form_errors"></p> 
<input type="text" class="box" name="user"> 
<p id="error_password" class="form_errors"></p> 
<input type="password" class="box" name="password"> 
<input type="submit" id="send"> 

Является ли форма тег необходимому? И если да, я должен упомянуть действие и метод? Должен ли я указывать тип ответа?

И в ksite/счет я:

/* ...... */ 
if (!this->form_validation->run(''account")) { 
    echo "The account couldn't be made"; 
} else { 
    echo "The account was successfully created "; 
} 

P.S.Although вы не можете быть знакомы с CodeIgniter, я был бы признателен, если кто-то может сказать мне, если код верен, и какие улучшения могут быть сделаны.

+0

Существует ошибка в вашем PHP, если условие 'запуска («»учетной записи") 'заменить эти две одинарные кавычки с двойной. –

ответ

0

Вот что я сделал.

Вы должны получить Ajax для получения данных без обновления страницы.

HTML Page

$form = $(form); 
var url = $form.attr('action'); 
dataString = $form.serialize(); 
$.ajax({ 
type: "POST", 
url: url, 
data: dataString, 
dataType: "json", 
success: function(data) { 
$(data).each(function(j,details){ 
var status = details.status; 
var message = details.message; 
$('#message_ajax_register').show(); 
$('#message_ajax_register').html('<div class="alert alert-success">'+message+'</div>'); 
}); 
} 
});//end of $.ajax** 

Я первый устанавливающим правила в моем методе контроллера, а затем проверки его.

Контроллер

public function update_fest() 
    { 

     if($this->input->post()) 
     { 
     $this->form_validation->set_rules('txtgpluswebsite', 'Google Plus Page URL', 'trim|xss_clean|prep_url'); 
     $this->form_validation->set_error_delimiters('<div class="error">', '</div>'); 

     if($this->form_validation->run() == false){ 
      $message = validation_errors(); 
      $data = array('message' => $message,'status'=>0); 
     } 
     else{ 
      $message = $this->add_fest_database(); 
      $data = $message; 
     } 
    } 
    else{ 
      $message = "Fest details are required"; 
      $data = array('message' => $message,'status'=>0); 
     } 
    $this->output->set_content_type('application/json'); 
    $json = $this->output->set_output(json_encode($data)); 
    return $json; 
} 

Если проверка запуска не является ложным, а затем перейти к add_fest_database (другие функции). В этой функции,

function add_fest_database() 
    { 
     $youtubeWebsite = $this->input->post('txtyoutubewebsite'); 
     $gplusWebsite = $this->input->post('txtgpluswebsite'); 
     $this->load->model('model_fest'); 
     $data = array("fest_youtube"=>$youtubeWebsite,"fest_gplus"=>$gplusWebsite); 
     return data; 
    } 
+0

Большое спасибо! – user3009269

+0

Если выше ответ полезно, а затем пометьте его как полезный, чтобы другие ребята могли его использовать. Спасибо. – Chopra

+0

К сожалению, я не так часто использую stackoverflow, и у меня нет достаточных точек репутации, чтобы отметить его как полезное. – user3009269

Смежные вопросы