在交叉后续ajax get请求中使用来自ajax post请求的cookie

时间:2015-08-03 19:13:45

标签: javascript jquery ajax cookies

这是我使用javascript的第一周,我正在尝试访问需要通过帖子请求进行身份验证的API。帖子工作正常,但我无法弄清楚如何使用get请求发送cookie。

EDIT2:

我将成功功能更改为:

success: function(data, status, xhr);

跟随文档稍微靠近一点。从console.log(data,status,xhr)返回以下内容:

对象{readyState:4,responseText:“{”value“:{”publisher“:{”active“:”1“,”publisher_id“:”######“}}}”,responseJSON:对象,状态:201,statusText:“已创建”}

也许这可以为那些人澄清事情?

到目前为止,这是我的代码:

<!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>

2 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

问题是ajax调用是异步的,因此第一个调用仍然在等待响应,第二个调用也已经开始了。

如果我理解你想做什么(用帖子获取cookie,然后在获取中使用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。