[英]Javascript AJAX strange behaviour
我有這樣的事情:
elFinder.prototype.commands.info = function()
{
this.exec = function(hashes)
{
var temp_array = new Array(),
temp_html = new String();
var request = new XMLHttpRequest();
request.onload = function()
{
temp_html = "<a href='foo'>bar</a>";
temp_array.push(temp_html);
alert("Outside - Array size is " + temp_array.length);
}
request.open("get", "foo.com/url", true);
request.send();
alert("Outside - Array size is " + temp_array.length);
}
}
分別打印:
內部-數組大小為1
和
外部-數組大小為0
以某種方式“丟失”數組內容。
問題出在AJAX
概念本身內部。 尤其是true
成
request.open("get", "foo.com/url", true);
意味着應該以異步方式處理請求(順便說一下,建議的方式是進入主線程環境,因為像Chrome這樣的瀏覽器會因為同步請求通常會帶來巨大的延遲而棄用同步請求)。
洞察力是由alert()
系列中不同順序提供的,先在Firefox中測試片段,然后在Chrome中測試片段。
在我的上下文中,我嚴格需要同步行為,因此我將布爾標志設置為false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.