我正在尝试从jsonp请求的结果创建一个变量,并在稍后的脚本中使用此变量。但似乎在jsonp请求完成之前触发了使用变量的部分。
function onSuccess(data) {
var result = data['result'];
console.log(result);
}
function onError(data) {
alert(data);
}
$.ajax({
url:"http://suneeriksen.unboxer.org/",
cache: false,
dataType: 'jsonp',
jsonp: 'callback',
timeout: 5000,
success: onSuccess,
error: onError
});
var gallery,
el,
i,
page,
dots = document.querySelectorAll('#nav li'),
slides = result //this is where I try to fetch the variable
];
我试图弄清楚如何做到这一点。我试图将jsonp请求放在一个函数中并像这样完成: var slides = jsonpResult();
有任何线索该做什么?
编辑: 我还有使用图库变量的功能
gallery.onFlip(function () {
//Doing stuff
}
我无法将所有这些都放在onSuccess函数中。
答案 0 :(得分:3)
将其绑定到onSuccess - 在onSuccess发生之前不要调用使用它的函数。 您也可以强制您的请求是同步的(在您的ajax运行之前不会执行任何代码)但我强烈建议您不要。
答案 1 :(得分:1)
有两种方法:
通过在ajax调用选项中设置async: true
来使AJAX调用不是A(同步)(请注意,此方法现已弃用)。
或:
在成功回调中调用任何使用slides
变量的代码(并在那里进行分配,如果您需要它以备将来使用)。