2015-05-19 68 views
-3

我有一个采用表单输入的页面,它使用HTML和PHP(codeignter框架)编写,我面对的问题是当存在表单验证错误时,页面刷新是不重新加载像全新的页面,我的意思是它不清除输入字段和错误信息仍然在页面刷新和即使我改正输入和点击提交后,当我点击浏览器后退按钮,它仍然加载有验证错误的页面.. 任何想法为什么会发生或如何解决它。当我刷新它时,我只需要重新加载页面。删除页面刷新时的表单验证错误

这是我的看法(view1.php)

<html> 
<?php 
    echo validation_errors(); 
    form_open('search_controller/search_fn'); 
    form_input('input1', set_value('input1')); 
    form_input('input2', set_value('input2')); 
    form_input('input3', set_value('input3')); 
    form_submit('submit', 'Submit'); 
?> 
</html> 
Controller Functions 

function index() { 
    $this->load->view('view1'); 
} 

function search_fn { 
    if($this->input->post('submit') { 
     $this->form_validation->set_rules('input1', 'XXXX',  
           'trim|some_validation'); 
     $this->form_validation->set_rules('input2', 'XXXX', 
           'trim|some_validation');  
     $this->form_validation->set_rules('input3', 'XXXX', 
         'trim|some_validation'); 

     if($this->form_validation->run() == FALSE) { 
      //when validation fails 
      $this->load->view('view1'); 
     } else { 
      //when all input is validated sucessfully 
      do some processlisng, 
      //load some other view 
      $this->load->view('view2'); 
     } 
    } else { 
     //When page is refreshed, this is supposed to redirect 
     redirect('search_controller/index'); 
    }  
} 

当输入验证失败,网址回来为www.something.com/search/search_fn,当我刷新,它基本上加载相同的页面与相同的错误消息。我在某种程度上需要重置 $ this-> input-> post('search'),所以只有在点击搜索按钮时它才会成立。

谢谢。

+0

欢迎来到Stack Overflow!这个问题在信息上有点短暂。你可以分享你的尝试,以及你遇到了什么问题? –

+0

没有你发布你遇到问题的代码的例子,几乎不可能帮助你。 – McWayWeb

+0

请记住,IE浏览器和其他浏览器保存状态(真的很烦人),并且即使页面刷新后也会保留数据。不知道这与你的问题有什么关系。 – philtune

回答

0

您是否在处理表单后使用CodeIgniter的redirect()函数?你应该总是做

我的意思是你在完成后处理提交的数据,而不是回报,TRUE或干脆关闭功能,简单redirect('CONTROLLER_NAME');,即使你想他们是在同一个页面

对于上字段,我会建议在您的输入中使用自动完成=“关闭”(if you are not using an <input type="text"> above an <input type="password"> because Chrome and next version of Firefox will ignore automplete="off" in that situation)

+0

感谢您的答复阿拉。 – PREDDY

+0

如果我添加重定向页面被重定向到我重定向的新网址..我更新了我的问题,使其更清晰。 – PREDDY

+0

@PREDDY我的意思是在表单提交时使用重定向,而不是刷新页面!例如更改'$ this-> load-> view('view2');''with'redirect('CONTROLLER_NAME')',如果您需要在重定向后使用Codeigniter flash数据显示任何消息, 'form_input('input1',set_value('input1'),'autocomplete =“off”');' – Vladimir