2016-03-07 145 views
0

我正在使用下面的代碼通過ajax發送電子郵件。問題是,即使電子郵件沒有被髮送,例如我本地主機或沒有互聯網連接,成功命令仍然會被腳本返回。請告知我應該對代碼進行哪些修改,以便在遇到錯誤時進行檢測。Ajax表單提交錯誤

$('#send_button').click(function(e) { 
    $("#sending").removeClass("hidden_div");//just to know that we have some data 

    alerts = ''; 
    if($("input[name=names]").val() == ''){ 
     alerts += "1"; 
     $("#error_name").removeClass("hidden_div"); 
    } 

    if(alerts != ''){ 
     $("#sending").addClass("hidden_div"); 
    } else { 
     $.ajax({ 
       url:'index.php', 
       type:'POST', 
       data:$("#form").serialize(), 
       cache: false, 
       success: function(data){ 
        show_ok(); 
       }, 
       error: function(){ 
        $("#msg_not_sent").removeClass("hidden_div"); 
        $("#msg_not_sent").empty().append("An error has occurred. Kindly try again."); 
        } 
     });  } 
    e.preventDefault(); 
}); 
+0

我承擔的index.php存在,所以阿賈克斯後一定會成功。它將使用表單數據對index.php進行POST。無關緊要的是,index.php不會成功發送電子郵件,因爲它不再是異步的Ajax調用關注點。 – stevenvanc

回答

0

我相信這會發生,如果你調用的代碼不會報錯jQuery中預計的方式,或者不使用匹配的返回數據類型,你可以得到這一點。儘管如此,還是有辦法的。

complete: function (data) { 
    if (data.status == "200") { 
    } 
0

data應包含success屬性。

由於您的電話最有可能會成功,您還需要考慮行動的結果。

PHP:

$success = false; 
if(somethingOk){ 
    $success = true; 
} 
echo json_encode(array(
    'success' => $success 
)); 

JS:

dataType: 'json',  // make sure you get a json 
success: function(data){ 
    if (data.success){ 
     show_ok(); 
    } else { 
     alert("error"); 
    } 
},