我想要进行YAHOO.util.Connect.asyncRequest调用,这不是异步的。就像open(method, url, async)一样,其中false由异步传递。
我在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中,当'open'传递false时,不会在'onreadystatechange'上调用回调函数(handler)?在IE和Opera中它可以正常工作。
答案 0 :(得分:2)
YUI3支持“YUI io”中的同步请求,可在GitHub上的开发主机上使用。实现语法包含在README文件中,并将正式记录在3.1.0中发布。此增强功能在yuilibrary.com上记录为2528181。
如果您可以使用YUI 3,请尝试一下。
答案 1 :(得分:1)
YUI2不支持同步请求。根据IRC的一位开发人员的说法,它最终将成为YUI3的一部分。尽管由于用户体验造成的破坏,他们并不急于支持它。
答案 2 :(得分:1)
使用JQuery。 jQuery.ajax({async:false})适用于IE和FF。
答案 3 :(得分:-1)
我个人永远不会发出同步请求。 AJAX用于异步请求。如果请求需要更长时间,则UI将冻结。