Codeigniter控制器在表单验证时阻止整个页面重新加载

时间:2014-09-11 14:34:33

标签: php codeigniter

基本上,我有我的控制器功能,可以在我的情况下添加页面,但让我们专注于功能:

public function add() {
  $this->session->unset_userdata('postID');

  if ($this->form_validation->run() == TRUE) {
    // Form Validation
  }
  $this->data['subview'] = 'blah blah';
  $this->load->view('blah blah.php', $this->data);
} 

基本上提交表单时,在这种情况下仍然会取消设置postID,但是我想确保如果提交表单并且有错误而错过了它并且它不会重做我的一些函数和变量。在提交表单时,我的很多内容都会发生这种情况,它会重新启动我想要忽略的变量。

我也试过以下但是它也没有用:

if (!$this->form_validation->run()) {
  $this->session->unset_userdata('postID');
} 

当表单验证重新执行所有页面加载内容时,如何避免重写整个页面?

由于

2 个答案:

答案 0 :(得分:1)

您可以使用

检查是否已按下提交按钮
if($this->input->post('the-name-of-the-submit-button')) {
    $this->session->unset_userdata('postID');
}

基本上,$this->form_validation->run()检查表单是否已提交,如果它已通过验证规则,而上述内容只是检查表单是否已提交。

答案 1 :(得分:0)

如果您不希望页面刷新,则需要提交ajax:

http://phpsblog.agustinvillalba.com/sending-forms-ajax-codeigniter/

或者,您可以填写字段值,这样他们就不会重置&#34;即<input value="<?php echo $_POST['value'];?>" />,但是ajax是一个更好的解决方案。

您可以从codeigniter控制器返回JSON中的错误,并将其显示在您的页面上。

如果您使用浏览器执行任何类型的请求,除非您使用ajax / javascript,否则页面将始终刷新。