javascript - 发送 jqueryAjax 请求时出现错误

标签 javascript jquery ajax postman

首先,我成功登录,并使用以下代码片段在浏览器中由服务器设置了 cookie:

var form = new FormData();
form.append("email", "pmsoftwares@hotmail.com");
form.append("pword", "pass123");
form.append("geo", "6.4636835,3.8494566");

var settings = {
  async: true,
  crossDomain: true,
  url: "https://krdly-web-dev0.cfapps.io/session",
  method: "POST",
  processData: false,
  contentType: false,
  mimeType: "multipart/form-data",
  data: form
};

$.ajax(settings).done(function(response) {
  console.log(response);
});

但是当我使用下面的代码获取用户个人资料时,我收到“500:内部服务器错误”:

var form = new FormData();
form.append("email", "pmsoftwares@hotmail.com");
form.append("pword", "pass123");
form.append("geo", "6.4636835,3.8494566");

var settings = {
  async: true,
  crossDomain: true,
  url: "https://krdly-web-dev0.cfapps.io/user",
  method: "GET",

  xhrFields: {
    withCredentials: true
  },

  processData: false,
  contentType: false,
  mimeType: "multipart/form-data",
  //data: form
};

$.ajax(settings).done(function(response) {
  console.log(response);
});

以下代码是 postman 给出的,但在浏览器中不起作用:

var form = new FormData();
form.append("email", "pmsoftwares@hotmail.com");
form.append("pword", "pass123");
form.append("geo", "6.4636835,3.8494566");

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://krdly-web-dev0.cfapps.io/user",
  "method": "GET",
  "headers": {
    "cache-control": "no-cache",
    "postman-token": "70f8a8cf-6a8f-4905-aaed-69acaeb63cd2"
  },
  "processData": false,
  "contentType": false,
  "mimeType": "multipart/form-data",
  "data": form
}

$.ajax(settings).done(function(response) {
  console.log(response);
});

最佳答案

由于某种原因,浏览器未设置 POST ajax 请求发送的 cookie。只需将以下内容添加到 ajax POST 请求中即可:

xhrFields: {
    withCredentials: true
},

解决问题。以下是我的代码:

<!doctype html>
<html>
<head>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js">
  </script>
</head>
<body>
  <div class="">
      <button type="button" name="button">Send Ajax Request</button>
  </div>
  <script type="text/javascript">
    $(document).ready(function(){
      $("button").click(function(){
        // sendSecondRequest()
          // .always(sendFirstRequest)
          // .always(sendSecondRequest);
        sendFirstRequest().done(sendSecondRequest);
      });
    });
    function sendFirstRequest(){
      var form = new FormData();
      form.append("email", "pmsoftwares@hotmail.com");
      form.append("pword", "pass123");
      form.append("geo", "6.4636835,3.8494566");

      var settings = {
        async: true,
        crossDomain: true,
        url: "https://krdly-web-dev0.cfapps.io/session",
        method: "POST",
        processData: false,
        contentType: false,
        mimeType: "multipart/form-data",
        data: form,
        xhrFields: {
          withCredentials: true
        }
      };

      return $.ajax(settings).done(function(response) {
        console.log(response);
      });
    }

    function sendSecondRequest(){
      var form = new FormData();
      form.append("email", "pmsoftwares@hotmail.com");
      form.append("pword", "pass123");
      form.append("geo", "6.4636835,3.8494566");

      var settings = {
        async: true,
        crossDomain: true,
        url: "https://krdly-web-dev0.cfapps.io/user",
        method: "GET",

        xhrFields: {
          withCredentials: true
        },

        processData: false,
        contentType: false,
        mimeType: "multipart/form-data",
        //data: form
      };

      return $.ajax(settings).done(function(response) {
        console.log(response);
      });
    }
  </script>
</body>

引用文献:

https://stackoverflow.com/a/7189502/566092

http://aleembawany.com/2006/11/14/anatomy-of-a-well-designed-ajax-login-experience/

关于javascript - 发送 jqueryAjax 请求时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620574/

相关文章:

javascript - 将图像放置在元素上以表示它被选择

javascript - Node.js 在本地返回 JS 文件

javascript - 如何在 iframe 标签中插入 javascript 代码

jquery - 一个ajax错误引发的响应是什么

Javascript - 如何使 ping 结果始终按照数组变量的原点顺序

javascript - 如何降低 Scroll-Top Speed

javascript - 为什么我应该使用 JQuery Ajax 模板

java - 嵌入式 Java Web 小程序的 Microsoft 版本是什么?

java - 如何从浏览器访问安卓

javascript - 在包含 html 的变量中选择一个元素