没有发送Ajax请求

时间:2014-12-04 18:48:52

标签: jquery ajax

我目前正在创建一个向应用程序发出POST请求的函数。我正确设置了JSON字符串,但是当我使用调试器和监视网络活动时,我从未看到从浏览器发送任何请求。这是我的代码细分。我不得不做一些诡计,因为这是一个PoC代码,它最初处理的是jsp页面。

$(document).ready(function() {

  $("#myForm").submit(function(e) {
    e.preventDefault();
    var myJsonObject = new Object();
    //set up my object and stringify it into myString

    sendDataToServer(myString);     
    });

  function sendDataToServer(jsonString) {
     $.ajax({
       type: "POST",
       data: jsonString,
       contentType: "application/json; charset=utf-8",
       url: "https://my.target.server.com"
       dataType : 'json',
       processdata: true,
       success: eval("successMessage"),
       error: eval("failureMessage")
       });
    }

 function successMessage() {
    alert("Post was successful");
  }

 function failureMessage() {
    alert("Post failed");
  }
});

现在,我的ajax调用失败(仍在处理凭据问题和证书),但我甚至看不到从一开始就发送的任何请求。我的ajax呼叫是错误的,还是有其他问题?如果由于证书问题而拒绝访问服务器,那么在发送任何请求之前尝试建立与服务器的连接时是否会失败?

对于一些额外的信息,我确实在提交表单时看到failureMessage()警告,所以我知道它至少调用了ajax函数。

3 个答案:

答案 0 :(得分:1)

无法发送跨域AJAX请求。

似乎“https://my.target.server.com”与您的脚本运行的域不同。 其他受欢迎的解决方案是JSONPiframeflash。或者使用后端作为代理。

请参阅thisthis。 如果目标服务器也归您所有,您可能需要检查Cross-Origin Resource Sharing

答案 1 :(得分:0)

这可能是因为跨网站域名。默认情况下,它设置为false。如果url是另一个域,则需要将其切换为true。

根据JQuery文档

crossDomain (default: false for same-domain requests, true for cross-domain requests)
Type: Boolean
If you wish to force a crossDomain request (such as JSONP) on the same domain, set the value of    crossDomain to true. This allows, for example, server-side redirection to another domain. (version added: 1.5)

希望这会有所帮助 快乐学习:)

答案 2 :(得分:0)

请参阅此内容以说明我对闭包的含义。我还整合了其他人给出的答案。

function sendDataToServer(jsonString) {
    $.ajax({
       type: "POST",
       data: jsonString,
       contentType: "application/json; charset=utf-8",
       url: "https://my.target.server.com"
       dataType : 'json',
       processdata: true,
       crossDomain: true,
       success: function() {alert("Post was successful")},
       error: function(){alert("Post failed")}
    }
}