$ .post不触发功能

时间:2014-09-04 15:52:25

标签: javascript jquery

我真的不明白为什么{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触发成功或失败。

1 个答案:

答案 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) {}
});