电子邮件已通过 AJAX POST 成功发送,但触发了错误回调而不是成功回调
E-mail sucessfully sent via AJAX POST but error callback triggered instead of success callback
我正在使用 AJAX 发送电子邮件并且它有效,电子邮件已发送给我的收件人。然而,我不明白的是为什么 AJAX 的 success
回调没有被触发,尽管已经发送了一封电子邮件。相反,会触发 error
回调。
显然这不是 CORS 问题,因为我在 AJAX 的 url
参数中使用相同的服务器。此外 Google 开发工具未报告任何问题并显示 200 OK
.
JS代码:
$(document).ready(function(){
$(".js-validate-2").validate({
ignore: ":hidden",
rules: {
//something
},
messages: {
//something
},
submitHandler: function(form) {
var recipient = "myEmailTest@gmail.com"
var specifiedProduct = "PRODUCT: " + $('#specifiedProduct').val();
var msg = $('#msg').val();
var phone = "TEL: " + $('#phone').val() + ". ";
var params = {
"email": recipient,
"subject": specifiedProduct,
"body": msg + phone,
};
var sendingToSupport = $.ajax({
url: 'http://myServer/u/support/message',
data: JSON.stringify(params),
type: 'POST',
dataType: 'json',
contentType: 'application/json',
success: function(data) {
console.log("Huge success");
console.log(params);
console.log(data);
alert("Successfully sent!");
},
error: function(data) {
console.log("Huge failure");
console.log(params);
console.log(data);
alert("We apologize for an error!");
$(".support-form").find("input[type=text], textarea").val("");
}
});
}
})
})
所以,问题是由以下代码引起的:
dataType: 'json',
表示 AJAX 调用返回的数据将采用 JSON 格式。因此 jQuery 将尝试解析这些数据。
就我而言,删除此代码有帮助,并且 AJAX 调用已成功发送并返回了正确的答案。
我正在使用 AJAX 发送电子邮件并且它有效,电子邮件已发送给我的收件人。然而,我不明白的是为什么 AJAX 的 success
回调没有被触发,尽管已经发送了一封电子邮件。相反,会触发 error
回调。
显然这不是 CORS 问题,因为我在 AJAX 的 url
参数中使用相同的服务器。此外 Google 开发工具未报告任何问题并显示 200 OK
.
JS代码:
$(document).ready(function(){
$(".js-validate-2").validate({
ignore: ":hidden",
rules: {
//something
},
messages: {
//something
},
submitHandler: function(form) {
var recipient = "myEmailTest@gmail.com"
var specifiedProduct = "PRODUCT: " + $('#specifiedProduct').val();
var msg = $('#msg').val();
var phone = "TEL: " + $('#phone').val() + ". ";
var params = {
"email": recipient,
"subject": specifiedProduct,
"body": msg + phone,
};
var sendingToSupport = $.ajax({
url: 'http://myServer/u/support/message',
data: JSON.stringify(params),
type: 'POST',
dataType: 'json',
contentType: 'application/json',
success: function(data) {
console.log("Huge success");
console.log(params);
console.log(data);
alert("Successfully sent!");
},
error: function(data) {
console.log("Huge failure");
console.log(params);
console.log(data);
alert("We apologize for an error!");
$(".support-form").find("input[type=text], textarea").val("");
}
});
}
})
})
所以,问题是由以下代码引起的:
dataType: 'json',
表示 AJAX 调用返回的数据将采用 JSON 格式。因此 jQuery 将尝试解析这些数据。
就我而言,删除此代码有帮助,并且 AJAX 调用已成功发送并返回了正确的答案。