2010-01-11 111 views
0

我想進行YAHOO.util.Connect.asyncRequest調用,這不是異步。就像open(method, url, async)其中false是由異步傳遞的。使YUI異步請求調用不是異步

我在Connect類中找不到「syncRequest」。這可能使用YUI 2嗎?

我嘗試沒有YUI代替:

function createRequestObject() { 
    var ro; 
    // Mozilla, Safari,... 
    if (window.XMLHttpRequest) { 
     ro = new XMLHttpRequest(); 
     if (ro.overrideMimeType) { 
      ro.overrideMimeType('text/xml'); 
      // See note below about this line 
     } 
     // IE 
    } else if (window.ActiveXObject) { 
     try { 
      ro = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try { 
       ro = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e) {} 
     } 
    } 
    if (!ro) { 
     alert('Giving up :(Cannot create an XMLHTTP instance'); 
     return false; 
    } 
    return ro; 
} 
function sndReq(param,server,handler) { 
    http = createRequestObject(); 
    http.open('GET', server+"?"+param, false); 
    http.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    http.onreadystatechange = handler; 
    http.send(null); 
} 

,但在Firefox和Safari的回調函數(處理)不假時,在「打開」傳遞呼籲「的onreadystatechange」?在IE和Opera中,它工作正常。

回答

1

使用JQuery。 jQuery.ajax({async:false})適用於IE和FF。

1

YUI2不支持同步請求。據IRC的一位開發人員說,它最終將成爲YUI3的一部分。儘管由於它與用戶體驗的混戰,他們並不急於支持它。

2

YUI3支持「YUI io」中的同步請求,並可在GitHub上的開發主文件中找到。實現語法包含在README文件中,並將在3.1.0中正式記錄發佈。在yuilibrary.com上將此增強記錄爲2528181。

如果您有能力使用YUI 3,請嘗試一下。

-1

我個人不會提出同步請求。 AJAX適用於異步請求。如果請求花費更長時間,則UI將凍結。