我需要向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,
}
}
答案 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);
});
};