我在前两次之后收到了一个ajax电话。我需要将这些调用的结果传递给新的调用,所以我执行以下操作
$.when(getRespData(), getAxisComponents()).done(function (respData, axisData) {
var a = respData; //everything is ok
var b = axisData; //everything is ok
$.ajax({
dataType: "json",
url: '/rest/visualization/' + taskName + '/workload?runName=' + runName+ '&type=' + 'VAL',
success: (function (data) {
var c = respData; //everything is ok
var d = axisData; // Uncaught ReferenceError: axisData is not defined
}
但是当我尝试在我的新ajax调用中获取我的axisData时,我得到了Uncaught ReferenceError,尽管使用respData的操作是可以的。 我的前2个ajax调用看起来像
function getRespData() {
return $.ajax({
dataType: "json",
url: '/rest/visualization/' + taskName + '/workload?runName=' + runName + '&type=' + 'RESP',
success: (function (data) {
return data;
})
});
}
function getAxisComponents() {
return $.ajax({
dataType: "json",
url: '/rest/visualization/' + taskName + '/workload/axis?runName=' + runName,
success: (function (data) {
return data;
})
});
}
其中runName,type,taskName是包含所有这些ajax调用的函数的一些参数。 如何修复此错误,以便我能够访问内部ajax调用中的respData和axisData?
答案 0 :(得分:2)
我解决了它把 async false 和从 ajax 调用中声明一个数组,就像这样
let array = [];
$.ajax({
url: path,
type: 'GET',
async: false,
dataType: 'json',
success: function(response){
array = response;
}
});
return array;
答案 1 :(得分:-2)
您正在调用成功函数中的数据,但在此之前未设置数据。
在jQuery .ajax函数中,data是在执行Ajax请求时发送到服务器的数据,这就是为什么你可能认为它丢失了(因为它从来没有)。
请考虑以下事项:
testProjectApp.factory('updateClient', function($http, $q) {
return { ...