2017-07-08 97 views
0

我的验证错误显示,但如果填写字段并提交,没有任何反应。我猜jQuery中的某些错误,但我似乎无法看到它。我也包括了附加新闻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

你得到任何错误日志尝试添加'的console.log(数据)?; '.done(函数(data){'line。 –

+0

Get:Object {errors:Array(0),message:“Success!”} – Jonathan

+0

如果这是数据,那么如何访问数据。成功'? –

回答

0

data.successundefined如果你没有一个成功领域在您的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); 
        } 
       }) 
+0

嗯。这样可行。但是,为什么不'if(!data.success){'工作?它在我的php代码中定义:$ message ['success'] = true;'和'$ message ['success'] = false;' – Jonathan

+0

'$ message ['success'] = false;' - 这是一个赋值。这完全不意味着'成功'就是你回归的数据的一部分,这在你的日志消息中很明显。 –