使用cookie从ajax post请求在交叉后续ajax get请求

Use cookie from ajax post request in cross subsequent ajax get request

本文关键字:ajax 请求 get cookie post 使用      更新时间:2023-09-26

这是我使用javascript的第一周,我试图通过post请求访问需要身份验证的api。后工作很好,但我不知道如何发送cookie与get请求。

EDIT2:

我将成功函数改为:

success: function(data, status, xhr);

更接近文档。从console.log(data, status, xhr)返回以下内容:

Object {readyState: 4, responseText: "{"value":{"publisher":{"active":"1","publisher_id":"######"}}}", responseJSON: Object, status: 201, statusText: "Created"}

也许这对外面的人来说澄清了一些事情?

下面是我的代码:
<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="jquery-2.1.4.min.js"></script>
    <script>
        $(function() {
            $.ajax({
                url: "https://publisher-api.com/1.0/Publisher/Login", 
                type:"POST",
                data: {"username":"######","password":"@@@@@@"}, 
                dataType: "json",
                success: function(response) {
                    console.log(response);
                }
            });
            $.ajax({
                url: "https://publisher-api.com/1.0/Publisher(######)/Channels/RevenueReport",
                type: "GET",
                dataType: "json",
                success: function(data) {
                    console.log(data);
                }
            });
        });
    </script>
</head>
<body>
</body>
</html>

试试这个:

$.ajax({
    url: "https://publisher-api.com/1.0/Publisher(######)/Channels/RevenueReport",
    type: "GET",
    dataType: "json",
    xhrFields: {
        withCredentials: true
    },
    success: function(data) {
        console.log(data);
    }
});

问题是ajax调用是异步的,所以当第一个调用仍在等待响应时,第二个调用也已经启动了。

如果我明白你想做什么(获取cookie与post,然后在get中使用cookie),你会想要嵌套ajax调用。所以

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="jquery-2.1.4.min.js"></script>
    <script>
        $(function() {
            $.ajax({
                url: "https://publisher-api.com/1.0/Publisher/Login", 
                type:"POST",
                data: {"username":"######","password":"@@@@@@"}, 
                dataType: "json",
                success: function(response) {
                  $.ajax({
                    url: "https://publisher-api.com/1.0/Publisher("+ response.cookie +")/Channels/RevenueReport",
                    type: "GET",
                    dataType: "json",
                    success: function(data) {
                        console.log(data);
                    }
                  });
                }
            });
        });
    </script>
</head>
<body>
</body>
</html>

假设第一个ajax调用的响应包含cookie。