我使用ajax和php创建了一个表单。初始加载和输入表单中的值都可以正常工作,但是在我收到错误的地方,是在按下提交按钮之后。这是表单的标记,以及ajax和php处理程序:
形式的相关部分:
<form id="edit_time">
<!-----form fields here----!>
<button class="saveRecurrence" type="button" onclick="editTimeDriver('.$_GET['driver_id'].')">Save</button>
ajax部分:
function editTimeDriver(driver_id) {
var time = "";
if (driver_id)
{
time += "&driver_id="+driver_id;
}
var data = $("#edit_time").serialize();
$.ajax({
url: "ajax.php?action=save_driver_event"+time,
dataType: "json",
type: "post",
data: data,
beforeSend: function()
{
$(".error, .success, .notice").remove();
},
success: function(json)
{
if (json["status"]=="success")
{
alert(json["message"]);
$("#edit_time")[0].reset();
}else{
if(json["error"]["date_from"]){
$("input[name=date_from]").after("<div class="error">"+json_time["error"]["date_from"]+"</div>");
}
}
}
});
}
然后传递给php部分:
$json = array();
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$date_from = tep_db_prepare_input($_POST['date_from']);
if (preg_match("/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/", $date_from)) {
$json['error']['date_from'] = 'Start Date is not valid!';
}
if (isset($json['error']) and !empty($json['error'])){
$json['status'] = 'error';
$json['message'] = 'Please check your error(s)!';
}else{
$json['status'] = 'success';
$json['message'] = 'Time Data has been successfully updated!';
}
}
echo json_encode($json);
现在由于某种原因,如果date_from
字段留空,并且表单已提交,则它不会返回错误消息,而是返回成功消息。谁能告诉我为什么它没有阅读错误?
答案 0 :(得分:0)
通过这个更改您的代码
onclick="editTimeDriver('<php echo $_GET['driver_id'] ?>'); return false;"
return false
语句阻止使用http提交表单(因为您要发送ajax请求)
你在$_GET['driver_id']
不要忘记php正在运行服务器端