成功提交时不会触发成功消息

时间:2017-07-08 14:36:54

标签: jquery ajax

我的验证错误显示但是如果我填写该字段并提交,则没有任何反应。我猜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);

1 个答案:

答案 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);
                    }
                })