Ajax 在重新加载页面后没有将我的输入保存在表单中



我正在尝试使用Ajax,它将保持 用户已输入的输入,但由于某种原因,它不起作用。 如果发生错误,我的控制器会使用错误数据重定向视图, 但是,在页面上传后,表单为空。
我正在使用Codeigniter的MVC模型。

$("#save").click(function () {
var tnum1 = $("#tnum1").val();
var tnum2 = $("#tnum2").val();
var tnum3 = $("#tnum3").val();
var loc = $("#loc").val();
var dine = $("#dine").val();
var date = $("#date").val();
var time = $("#time").val();
var phone = $("#phone").val();
var fullname = $("#fullname").val();
$.ajax({
type: 'POST',
url: "<?php echo site_url(); ?>" + "/hosting/create",
data: {tnum1:tnum1, tnum2:tnum2, tnum3:tnum3, loc:loc, dine:dine, 
date:date, time:time, phone:phone, fullname: fullname},
error: function () {
alert( "Load was performed.");
},
success: function (data) {
if (data === "") {
window.location.href = "<?php echo site_url('hosting/tableMap'); ?>";
}
else {
$("#error").html(data);
}
}
});
});

控制器

public function create() {  
$newDate = date("Y-m-d",strtotime($this->input->post('re_date')));
$newTime = date("H:i", strtotime($this->input->post('re_time')));
$data = array(
'num' => $this->input->post('num'),
'location' => $this->input->post('location'),
'diners' => $this->input->post('diners'),
're_date' => $newDate,
're_time' => $newTime,
'phonenumber' => $this->input->post('phonenumber'),
);
$dataclient = array(
'fullname' => $this->input->post('fullname'),
'phonenumber' => $this->input->post('phonenumber'),
);
$error = $this->validation($data,$dataclient);
if ($error) {
$data['error'] = $this->session->set_flashdata('error','<b><u>Failed! </u></b>'.$error.'');
redirect(base_url("/hosting/tableMap"));
} else {
$this->Hosting_model->form_insert($data, $dataclient);
}
}

如果重定向控制器,则它不会保留以前的值。而是将错误保存在变量中并将其返回到 ajax 函数。
这就是ajax的重点 - 不重定向或重新加载页面,即异步执行任务。

删除此行-

redirect(base_url("/hosting/tableMap")); // redirecting on error

然后在您的控制器中

if ($error) {
// data['error'] = $this->session->set_flashdata('error','<b><u>Failed! </u></b>'.$error.''); // remove this as page will not reload, flashdata wouldn't work
// redirect(base_url("/hosting/tableMap"));
$ajax_data['error'] = 1; // if error exists then value
$ajax_data['validation_error'] = $error;
} else {
$this->Hosting_model->form_insert($data, $dataclient);
$ajax_data['error'] = 0;  // if error doesn't exist then value
}
return json_encode($ajax_data); // or echo json_encode($ajax_data);

现在,为了防止表单提交的默认操作,即重定向页面使用

$("#save").click(function (e) { 
e.preventDefault();
// rest of your code

那么在你的阿贾克斯成功中:

if (data.error == 0) {  // no error
window.location.href = "<?php echo site_url('hosting/tableMap'); ?>";
}
else {  // error
$("#error").html(data); // do whatever you want to do with error
// errors can be retrieved from "data.validation_error" -- it will be an array probably sp you'll have to loop through each element
}

相关内容

  • 没有找到相关文章

最新更新