如何使用ajax post请求响应数据来发出另一个ajax post请求?

时间:2016-02-14 03:16:09

标签: json ajax post .post

我需要向api url发出两个ajax post请求。第一个请求返回一些数据为json(password,session,sessionId,itemId)。

任何人都可以告诉我如何获取密码,会话,sessionId,itemId值并使用它来向同一个api url发出另一个ajax帖子请求?

我当前的代码只获得api响应,但如何在第二个帖子请求中使用password,session,sessionId,itemId的值?

我尝试引用api数据,如data.keys.password,data.keys.session,data.items.seasonId,data.items.itemId,我得到错误data.keys和data.items未定义!

有谁能告诉我我做错了什么?

(注意:目前我把数据放在第二个帖子请求中,硬编码用于演示目的)

ajax发布请求电话:

function callAjax() {


        $.post("https://api-somewebsite.com/process.aspx",
        {
          name: "galaxy",
          itemNum: "123456789"
        },
        function(data,status){
            alert("Data: " + data + "\nStatus: " + status);
            // now i want to use api response data to make another ajax post call
             $.post("https://api-somewebsite.com/process.aspx",
             {
               password: "2342432423ledf",
               session: "23isaofdfjosidfiedfdd=="
               seasonId: "12345",
              itemId:    "334455"
             },
            function(data,status){
            alert("Data: " + data + "\nStatus: " + status);


             });

        });


};

<br>
<button onclick="callAjax()">callAjax</button> 

api响应(对于第一个ajax post请求)我想引用它的项目:

{
     "keys": {
         "password": "2342432423ledf",
         "session": "23isaofdfjosidfiedfdd=="
     },
     "items": {
         "seasonID": 12345,
         "itemID": 334455,
}

}

2 个答案:

答案 0 :(得分:2)

我们在chat中解决了这个问题。

第一个请求没有将 Content-Type 标头设置为JSON,因此不会解析响应。将dataType设置为json$.post的最后一个参数)会正确设置标头,并且响应将被解析为JSON。这意味着data是一个对象,可以访问其属性,而不是字符串。

答案 1 :(得分:-1)

我认为下面的代码可以帮助你

function callAjax() {


    $.post("https://api-somewebsite.com/process.aspx",
            {
                name: "galaxy",
                itemNum: "123456789"
            },
            function(data,status){
      //return the data as json_encode(yourvalue); from process.aspx 
                console.log(data);
                alert("Data: " + data + "\nStatus: " + status);                   

            });

       };