原型ajax,第二个setTimeout后的undefined json

时间:2011-12-15 12:28:14

标签: ajax settimeout

原型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 :(得分:0)

完成。

解决方案是在setTimeout中使用它之前再次重新调整json。

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 json是不够的,并且在一个window.setTimeout函数之后某个地方消失了?