我的验证错误显示但是如果我填写该字段并提交,则没有任何反应。我猜jQuery中有些错误,但我似乎无法看到它。我还包含了add-news-ajax.php的代码
$(document).ready(function(){
$('form').submit(function(e){
e.preventDefault();
var form = $( "#form1" ).serialize();
$.ajax({
url: 'functions/add-news-ajax.php',
type: 'POST',
dataType: 'json',
data: form,
})
.done(function (data) {
if (!data.success) {
if(data.errors.n_title) {
$( "#title-error" ).hide().html(data.errors.n_title).fadeIn();
}
} else {
alert(data.message);
}
})
.fail(function (jqXHR, textStatus, errorThrown) {
console.log(textStatus + ': ' + errorThrown);
});
});
});
这是来自ajax调用的php:
$errors = array();
$response = array();
if(empty($_POST['n_title'])) {
$errors['n_title'] = "<div class='alert alert-danger'> Title required </div>";
}
$response['errors'] = $errors;
if($errors) {
$message['success'] = false;
$response['message'] = "fail";
} else {
$message['success'] = true;
$response['message'] = "Success, yay!";
}
echo json_encode($response);
答案 0 :(得分:0)
如果data.success
中没有成功字段,undefined
将是data
。因此,在写alert("success");
您可能希望done方法如下
done(function (data) {
if (data.message != "Success!") {
if(data.errors.n_title) {
$( "#title-error" ).hide().html(data.errors.n_title).fadeIn();
}
} else {
alert(data.message);
}
})