2016-02-14 61 views
0

我需要对api url进行两次ajax post请求。第一个请求返回一些数据为json(password,session,sessionId,itemId)。如何使用ajax post请求响应数据发出另一个ajax post请求?

任何一个可以告诉我如何抓取密码,会话,sessionId,itemId值,并使用它来使另一个Ajax发布请求到相同的API网址?

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

我试图引用像这样的data.keys.password,data.keys.session,data.items.seasonId,data.items.itemId这样的api数据,并且我得到错误data.keys和data.items是未定义的!

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

(注:目前,我把数据放到硬编码演示用第POST请求)

AJAX POST请求调用:

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, 
} 

} 
+0

将内部POST请求中的硬编码数据替换为第一个请求的成功函数中的“data”变量时会发生什么?看起来像这将工作,使第二个请求的工作。 – danasilver

+0

感谢您的回复。我试图使用数据,keys.password和data.keys.session,但都给我未定义! – user1788736

+0

什么'数据'(从第一个请求)看起来像当你提醒/记录它? – danasilver

回答

2

我们在chat解决了问题。

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

-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);     

      }); 

     }; 
+0

这看起来像你刚刚采取了OP给出的示例回应作为示例,并作为后续请求中的数据提供。第二个请求应该使用实际的'data'对象来查找它需要在有效负载中提供的内容。目前这个答案给出了一个硬编码的值,而不是第一个请求的实际响应。 – Atticus

+0

@Atticus我编辑我的答案... –

+0

这没有任何意义,你甚至读过这个问题吗? “如何使用ajax post请求响应数据发出另一个ajax post请求?” – Atticus