我正在创建一个基本的CRUD。除了重新填充之外,一切正常。这是我正在做的细节。
我正在显示所有员工的列表。有一些链接添加新的。并为每位员工编辑和删除。现在在Add New或Edit i上填充jquery Colorbox并在其中加载我的表单。这是触及我的控制器方法的链接。
<a
href="<?php echo site_url('employees/form/'.$employee['id']);?>"
id="popUpEditFormTrigger"
return="<?php echo site_url('employees/entries'); ?>"
>Add New</a>
正如您在此处所见,我正在使用控制器方法来加载表单。这很好用。在颜色框form.js这里是一些代码。
var dataString = $('#updateForm').serialize();
var url = $('#updateForm').attr('url');
$.ajax({
type: "POST",
url: url,
data: dataString,
success: function() {
$.fn.colorbox.close();
}
});
return false;
当ajax成功时,它会关闭颜色框。 return false阻止列表视图更进一步,然后
return="<?php echo site_url('employees/entries'); ?>"
运行并刷新表中的条目。
控制器
public function submit()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('name',' Employee Name'.'trim|required');
$this->form_validation->set_rules('salary',' Salary'.'trim|required');
$this->form_validation->set_rules('description',' Description'.'trim|required');
if($this->form_validation->run()){
$data['name'] = $post['name'];
$data['salary'] = $post['salary'];
$data['description'] = $post['description'];
$result = $this->employeesModel->insertEmployee($data);
}else{
$this->load->view('employee_form');
}
}
问题:
问题是我想在colorbox中重新填充表单,以便我可以显示用户验证错误。但是无论是执行插入还是验证失败,颜色框始终会关闭。我想如果验证失败在colorbox中再次填充表单并阻止超链接属性返回到site_url('employees / entries')。我怎样才能做到这一点?我相信JQuery可以处理这个,但我不知道如何。建议要求。
答案 0 :(得分:0)
嘿,我不知道Ajax,但我正在使用带有JS的colorbox作为我的应用程序。我也只是出于同样的目的使用它。
在视图文件中加入colorbox.js
个文件,您将调用此Add New
链接。
<a href="javascript:add_new('<?php echo $employee['id'] ?>')">Add new</a>
当用户点击此链接时,这将调用您需要在文件末尾写入的JS函数。
function show_channels(employee_id) {
$.colorbox({href:"<?php echo ROOT_FOLDER ?>/controller_name/show_channels/" + employee_id,iframe:true,width:'515px',height:'374px'});
}
现在,colorbox将加载我在上面的javascript函数中指定的url。
现在你需要编写一个控制器函数来处理数据。
public function submit()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('name',' Employee Name'.'trim|required');
$this->form_validation->set_rules('salary',' Salary'.'trim|required');
$this->form_validation->set_rules('description',' Description'.'trim|required');
if($this->form_validation->run()){
$data['name'] = $post['name'];
$data['salary'] = $post['salary'];
$data['description'] = $post['description'];
$result = $this->employeesModel->insertEmployee($data);
}else{
$this->load->view('employee_form');
}
}
答案 1 :(得分:0)
好的,你在这里做的概念是造成这个问题的原因。如果没有验证错误,您想要关闭表单。但使用成功函数并不意味着。无论success function
的输出如何,ajax request
都会告知php
是否正确无误。所以你需要做的是......
在php方面:
if(ok){
$data['res'] = '1'; // which means that everything is ok
}
else{
$data['res'] = '0'; // which means that you had a problem with your validation.
}
// then pass the data in json format or any other format you need.
以上代码只是一个示例来澄清这个想法。
然后在你的jquery方面有什么重要的事情:
success: function(data) {
if(data.res == '1')
{
$.fn.colorbox.close();
}
else
{ // display the errors
}
}
所以这个成功函数告诉ajax request
已成功完成。所以在里面你可以检查验证是否正常。