我正在尝试查询一个API,该API需要一个初始请求才能生成报告,它返回一个报告ID,然后在5秒钟内您可以从该报告ID中提取它。
这是我所拥有的,可以完美运行并返回reportID:
Enter dimensions
9
wh bl wh bl wh bl wh bl wh
bl wh bl wh bl wh bl wh bl
wh bl wh bl wh bl wh bl wh
bl wh bl wh bl wh bl wh bl
wh bl wh bl wh bl wh bl wh
bl wh bl wh bl wh bl wh bl
wh bl wh bl wh bl wh bl wh
bl wh bl wh bl wh bl wh bl
wh bl wh bl wh bl wh bl wh
它返回以下内容:
$(document).ready(function(){
$("#r2").click(function(){
$.ajax({
url: "report.php",
dataType: 'json',
data: {
type: 'queue',
ref: 2
},
success: function(result){
console.log(result.reportID);
}});
});
});
我试图使其在第一个ajax后面调用另一个ajax调用,以使用reportID作为数据变量“ ref”来收集报告。因此,例如,第二个ajax查询应具有{"reportID":1876222901}
ref: 1876222901
我所坚持的是我将变量从第一个ajax调用的结果传递到第二个ajax调用的方式。它似乎没有做到这一点。我应该如何将报告ID $(document).ready(function(){
$("#r2").click(function(){
$('#loading').show();
$.ajax({
url: "report.php",
dataType: 'json',
data: {
type: 'queue',
ref: 2
},
success: function(result){
console.log(result);
$.ajax({
url: "report.php",
dataType: 'json',
data: {
type: 'get',
ref: result.reportID
},
success: function(result){
console.log(result);
}
});
}});
});
});
发送到我的第二个ajax呼叫中?
答案 0 :(得分:1)
您只需使用浏览器内置的DOM API和访存API就可以在不使用jQuery的情况下完成此操作
const r2 = document.getElementById('r2')
const loading = document.getElementById('loading')
const handleAsJson = response => response.json()
const fetchRef = ({reportId}) =>
fetch(`report.php?type=get&ref=${reportId}`)
document.onready = () => {
r2.addEventListener('click', () => {
loading.show();
// you don't have to interpolate here, but in case these
// values are variable...
fetch(`report.php?type=${'queue'}&ref=${2}`)
.then(handleAsJson)
.then(fetchRef)
.then(handleAsJson)
.then(console.log)
})
}
答案 1 :(得分:1)
解决方案是代替写作
ref: result.reportID
您必须这样写
ref: result.reportID.reportID
正如您所说,第一次使用console.log(result.reportID)
的结果是{"reportID":1876222901}
。这意味着您必须将点符号链接两次,才能在下一个ajax调用中达到值1876222901
。
要明确:
$(document).ready(function(){
$("#r2").click(function(){
$('#loading').show();
$.ajax({
url: "report.php",
dataType: 'json',
data: {
type: 'queue',
ref: 2
},
success: function(result){
console.log(result); // as you said, console.log(result.reportID) return {"reportID":1876222901}
$.ajax({
url: "report.php",
dataType: 'json',
data: {
type: 'get',
ref: result.reportID //which means, this line would be => ref: {"reportID":1876222901}
// we will correct it like this => ref: result.reportID.reportID
// then we properly get => ref:1876222901
},
success: function(result){
console.log(result);
}
});
}});
});
});
希望它可以解决您的错误。
答案 2 :(得分:0)
我想您可以尝试在您的第一个ajax之后创建另一个调用函数
$(document).ready(function(){
$("#r2").click(function(){
$.ajax({
url: "report.php",
dataType: 'json',
data: {
type: 'queue',
ref: 2
},
success: function(result){
console.log(result.reportID);
callSecondAjax(result.reportID)
}});
});
});
现在使该功能类似
function callSecondAjax(reportId){
// do some stuff
}