Попытка прочитать var до выполнения запроса jsonp - PullRequest
0 голосов
/ 24 февраля 2012

Я пытаюсь создать переменную из результата запроса 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 ]

3 голосов
/ 24 февраля 2012

Свяжите его для onSuccess - не вызывайте функцию, которая его использует, пока не возникнет onSuccess. Вы также можете заставить свой запрос быть синхронным (никакой код не будет выполняться до тех пор, пока ваш ajax не запустится), но я настоятельно рекомендую этого не делать.

1 голос
/ 24 февраля 2012

Существует два способа:

Сделать вызов AJAX не А (синхронным), установив async: true в параметрах вызова ajax (обратите внимание, что этот подход устарел).

или:

вызовите любой код, который использует переменную slides, изнутри обратного вызова успеха ( и выполните присвоение там же, если оно понадобится для использования в будущем ).

...