尝试在jsonp请求完成之前读取var

时间:2012-02-24 19:52:09

标签: javascript jquery ajax json jsonp

我正在尝试从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函数中。

2 个答案:

答案 0 :(得分:3)

将其绑定到onSuccess - 在onSuccess发生之前不要调用使用它的函数。 您也可以强制您的请求是同步的(在您的ajax运行之前不会执行任何代码)但我强烈建议您不要。

答案 1 :(得分:1)

有两种方法:

通过在ajax调用选项中设置async: true来使AJAX调用不是A(同步)(请注意,此方法现已弃用)。

或:

在成功回调中调用任何使用slides变量的代码(并在那里进行分配,如果您需要它以备将来使用)。