2017-07-08 65 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;' - 這是一個賦值。這完全不意味着'成功'就是你迴歸的數據的一部分,這在你的日誌消息中很明顯。 –