прототип ajax, неопределенный json после второго setTimeout - PullRequest
0 голосов
/ 15 декабря 2011

Возникли проблемы с прототипом ajax и setTimeout. Вот мой код сокращен:

//new ajax request
....onComplete: function (transport) { //json as this -> array[$i].something
        var json = transport.responseJSON;
        var $i = 0;
        window.setTimeout(function () {
            SLOW();
        },
        500); //display every json[$i] with custom delay
        function SLOW() {
            $i++;
            if (json[$i].something !== null) { //insert in proper div id in the html document
                window.setTimeout(function () {
                    $('document_div' + json[$i].something).innerHTML = json[$i].something_to_display;
                },
                500);
                window.setTimeout(function () {
                    $('document_div' + json[$i].something).innerHTML = json[$i].something_to_display;
                },
                1000);...window.setTimeout(function () {
                    SLOW();
                },
                500);
            } else {
                //stop and continue
            }

Получение этой ошибки: json[$i] не определено.

РЕДАКТИРОВАТЬ: похоже, я получаю эту ошибку во второй тайм-аут, первый корректно меняет div.

1 Ответ

0 голосов
/ 16 декабря 2011

Готово.

Решением было снова изменить json перед использованием в setTimeout.

var json_something = json[$i].something; //and so on...
var json_something_to_display = json[$i].something_to_display

 window.setTimeout(function() {     $('document_div'+json_something).innerHTML = json_something_to_display; }, 500);

Может кто-нибудь объяснить, почему это необходимо?Почему var ing json недостаточно, и он исчезает где-то после одной window.setTimeout функции?

...