如何使用ajax post请求响应数据发出另一个ajax post请求?
问题描述:
我需要对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,
}
}
答
我们在chat解决了问题。
第一个请求没有将Content-Type头设置为JSON,因此没有得到响应。将dataType
设置为json
($.post
的最后一个参数)可正确设置标头,并将响应解析为JSON。这意味着data
是一个对象,其属性可以被访问,而不是一个字符串。
答
我想下面的代码可以帮助你
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);
});
};
将内部POST请求中的硬编码数据替换为第一个请求的成功函数中的“data”变量时会发生什么?看起来像这将工作,使第二个请求的工作。 – danasilver
感谢您的回复。我试图使用数据,keys.password和data.keys.session,但都给我未定义! – user1788736
什么'数据'(从第一个请求)看起来像当你提醒/记录它? – danasilver