2
我有一個使用ajax發送郵件的腳本。我已通過檢查將收到郵件的電子郵件進行測試,結果足夠正確,ajax請求成功。我還檢查了我的Firefox瀏覽器的控制檯窗口,它也向我顯示了一個成功的消息。但我的問題在於,代替done
回調函數,會觸發error
回調函數。您可能都想知道爲什麼我仍在使用error
功能而不是fail
。原因是因爲當我嘗試使用fail
函數時,它不會觸發我在其中設置的alertbox。所以我做的是回去並再次使用error
函數,因爲至少它觸發了我所做的alertbox。即使請求成功,也會觸發錯誤回調函數
下面是腳本:
<script type="text/javascript">
var submitButton = $('#submit'); // Variable to cache button element
var alertBox1 = $('.success'); // Variable to cache meter element
var alertBox2 = $('.alert');
var closeButton1 = $('.close1'); // Variable to cache close button element
var closeButton2 = $('.close2'); // Variable to cache close button element
$(function(){
$('#contactform').submit(function(e){
e.preventDefault();
console.log('hello');
var formData = $(this).serialize();
console.log(formData);
$.ajax({
type: 'POST',
url: 'send.php',
data: formData,
dataType: 'json',
done: function(){
$(submitButton).fadeOut(500); // Fades out submit button when it's clicked
setTimeout(function() { // Delays the next effect
$(alertBox1).fadeIn(500); // Fades in success alert
}, 500);
},
error: function(){
$(submitButton).fadeOut(500); // Fades out submit button when it's clicked
setTimeout(function() { // Delays the next effect
$(alertBox2).fadeIn(500); // Fades in fail alert
}, 500);
}
});
});
$(closeButton1).click(function() { // Initiates the reset function
$(alertBox1).fadeOut(500); // Fades out success message
setTimeout(function() { // Delays the next effect
$('input, textarea').not('input[type=submit]').val(''); // Resets the input fields
$(submitButton).fadeIn(500); // Fades back in the submit button
}, 500);
return false; // This stops the success alert from being removed as we just want to hide it
});
$(closeButton2).click(function() { // Initiates the reset function
$(alertBox2).fadeOut(500); // Fades out success message
setTimeout(function() { // Delays the next effect
$('input, textarea').not('input[type=submit]').val(''); // Resets the input fields
$(submitButton).fadeIn(500); // Fades back in the submit button
}, 500);
return false; // This stops the fail alert from being removed as we just want to hide it
});
});
</script>
什麼似乎是一個造成的?只是爲了重申,我試過使用fail
而不是error
回調函數,因爲這是我在互聯網上找到的答案之一,也因爲我知道error
函數已被棄用。但由於我上面提到的原因,我別無選擇,只能使用它。
你是否從服務器返回任何json? –
嘗試使用成功,而不是完成 – Ritikesh
我從來沒有看到「成功」的術語被應用於成功的回調,正如@Ritikesh說的,而是嘗試使用「成功」附加回調 –