2016-02-14 107 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