2010-05-27 82 views
0

我有一個mootools的類此類方法:MooTools的問題在IE與請求

getData : function(){ 
    var r = new Request.JSON({ 
    url : this.container.getAttribute('data-url'), 
    method : 'post', 
    onSuccess : function(j){ 
     this.cards = j; 
     this.prepareQuiz(); 
    }.bind(this) 
    }).send(); 
}, 

在除了IE瀏覽器的任何這工作正常,但在IE中,我得到一個this.cards未在規定方法發生在this.prepareQuiz方法之後。我通過在this.prepareQuiz調用之前添加一個if($ defined(this.cards))來將問題縮小到本節,如果我每隔5次刷新一次頁面1,它就會工作。所以this.cards變量由於某種原因沒有被設置。

爲什麼會發生這種情況?

+0

你可以發佈一個精簡的上面的在線例子嗎? – Anurag 2010-05-27 00:31:53

+0

edl的答案爲我修好了。 – trobrock 2010-05-27 00:49:52

回答

0

我的猜測是,由於調用的異步性質,此卡沒有被它需要的時間初始化。至少你的症狀表明了這一點。嘗試一個同步調用,看看你是否有同樣的問題。

+0

啊,修好了。謝謝 – trobrock 2010-05-27 00:42:00

+0

不好主意,這個。更改爲onComplete並保持異步。阿賈克斯並不意味着是同步的,它只是要求麻煩... – 2010-05-27 07:11:52

+0

@Dimitar - 我同意。我只是想讓他用同步呼叫來隔離問題。 – edl 2010-05-27 18:09:31