我真的不明白为什么{1}}或alert
未在此代码中被触发:
console.log
虽然我可以看到邮件API的工作原理,因为我能够使用我在HTML表单中输入的值来获取电子邮件。 $.post("http://localhost:8080/mail",
jsonObject,
function(data) {
console.log("Done!");
alert("Thank you for your inquiry. We will get back to you soon.");
alert("Response: " + JSON.stringify(data));
}
);
和alert
未被触发可能是什么原因?
我可以在浏览器日志中看到这个:
阻止跨源请求:同源策略禁止读取
console.log
处的远程资源。这可以修复 通过将资源移动到同一域或启用CORS。
这可能是原因吗?如果是这样,我该怎么做才能使http://localhost:8080/mail
触发成功或失败。
答案 0 :(得分:0)
Cross Origin Requests(CORS)是您的问题。记录here
的$.ajax()
crossDomain参数
如果要在同一域上强制执行跨域请求(例如JSONP),请将crossDomain的值设置为true。例如,这允许服务器端重定向到另一个域。
$.ajax({
type: "POST",
url: "http://localhost:8080/mail",
crossDomain : true,
data: jsonObject
...
})
关于如何成功或失败:您可以将done(), fail(), and always()链接到$.post
$.post("http://localhost:8080/mail", jsonObject, function(data) {
// alert("success");
}).done(function(){
// alert("success 2");
}).fail(function() {
// alert( "error" );
}).always(function(){
// alert( "finished" );
});
哪个适用于$.ajax()
或使用$.ajax()
$.ajax(function(){
success: function (responseData, textStatus, jqXHR) {},
error: function (responseData, textStatus, errorThrown) {}
});