Javascript 实例化XMLHttpRequest对象的最佳方法
创建对象的最佳方法是什么 它应该适用于所有有能力的浏览器。使用(或类似的JavaScript库)。它负责处理跨浏览器兼容性问题,例如进行Ajax调用 ,使用:Javascript 实例化XMLHttpRequest对象的最佳方法,javascript,ajax,cross-browser,xmlhttprequest,Javascript,Ajax,Cross Browser,Xmlhttprequest,创建对象的最佳方法是什么 它应该适用于所有有能力的浏览器。使用(或类似的JavaScript库)。它负责处理跨浏览器兼容性问题,例如进行Ajax调用 ,使用: 这是一个有用的链接和一些代码(应该涵盖所有基础) var请求=null; 函数InitAJAX() { var objxml=null; var ProgID=[“Msxml2.XMLHTTP.6.0”、“Msxml2.XMLHTTP.3.0”、“Microsoft.XMLHTTP”]; 尝试 { objxml=newXMLHttpRe
这是一个有用的链接和一些代码(应该涵盖所有基础)
var请求=null;
函数InitAJAX()
{
var objxml=null;
var ProgID=[“Msxml2.XMLHTTP.6.0”、“Msxml2.XMLHTTP.3.0”、“Microsoft.XMLHTTP”];
尝试
{
objxml=newXMLHttpRequest();
}
捕获(e)
{
对于(变量i=0;i
使用任何JavaScript库都比编写自己的Ajax框架更可取,除非这是重点。如果您坚持自己编写,您可能想查看jQuery或[insert name here]框架,看看它们是如何做到的。对于无库解决方案,您可以模拟Prototype使用的Try。这些
相当容易:
function newAjax() {
try { return new XMLHttpRequest(); } catch(){}
try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(){}
try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(){}
try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(){}
try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(){}
return false;
}
这是我使用的,它对我很好:
function request()
{
try
{
try
{
return new ActiveXObject("Microsoft.XMLHTTP")
}
catch( e )
{
return new ActiveXObject("Msxml2.XMLHTTP")
}
}
catch(e)
{
return new XMLHttpRequest()
}
}
我赞同Cletus对jQuery的建议,并查看了该插件,该插件功能强大且易于使用,可通过Ajax快速将表单转换为工作状态。以某种方式使用和处理对象我建议您为IE自己编写以下或编写一个不太复杂的小补丁:
if(typeof window.XMLHttpRequest === 'undefined' &&
typeof window.ActiveXObject === 'function') {
window.XMLHttpRequest = function() {
try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}
try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}
return new ActiveXObject('Microsoft.XMLHTTP');
};
}
那你就可以了
var req = new XMLHttpRequest;
甚至在IE
编辑2011-02-18:有关新选择的MSXML版本背后的基本原理,请参见…函数CreateXmlHttpObj(){
}干净、斯巴达。可能希望“记住”定位的版本,这样您就不必每次都遇到1-4个异常。@Bishiboosh-在Firefox中工作正常-链接很好,可以将对象作为附加信息进行修复,此主题也很有用:
if(typeof window.XMLHttpRequest === 'undefined' &&
typeof window.ActiveXObject === 'function') {
window.XMLHttpRequest = function() {
try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}
try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}
return new ActiveXObject('Microsoft.XMLHTTP');
};
}
var req = new XMLHttpRequest;
try {
XmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
XmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (oc) {
XmlHttpObj = null;
}
}
// if unable to create using IE specific code then try creating for Mozilla (FireFox)
if (!XmlHttpObj && typeof XMLHttpRequest != "undefined") {
XmlHttpObj = new XMLHttpRequest();
}