回答
使用jQuery(或类似的JavaScript库)。它处理诸如创建Ajax调用等跨浏览器兼容性问题。
For example,使用jQuery Ajax call:
$.ajax({
url: 'document.xml',
type: 'GET',
dataType: 'xml',
timeout: 1000,
error: function(){
alert('Error loading XML document');
},
success: function(xml){
// do something with xml
}
});
这里是一个有用的链接和一些代码(应涵盖所有基地)
var request = null;
function InitAJAX()
{
var objxml = null;
var ProgID = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Microsoft.XMLHTTP"];
try
{
objxml = new XMLHttpRequest();
}
catch(e)
{
for (var i = 0; i < ProgID.length; i++)
{
try
{
objxml = new ActiveXObject(ProgID[i]);
}
catch(e)
{
continue;
}
}
}
return objxml;
}
request = InitAJAX();
跨浏览器,任何人?我认为这不适用于Firefox。 – 2010-01-09 14:18:41
@Bishiboosh - 它在Firefox中正常工作 - https://developer.mozilla.org/En/Using_XMLHttpRequest – 2010-01-14 15:21:43
对于库少的解决方案,你可以很容易模仿原型的使用Try.these
:
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;
}
清洁和斯巴达。可能想要“记住”定位的版本,所以你不必每次都有1-4次例外。 – Nicholas 2009-01-06 10:55:03
这是我使用的东西,它工作正常,我:
function request()
{
try
{
try
{
return new ActiveXObject("Microsoft.XMLHTTP")
}
catch(e)
{
return new ActiveXObject("Msxml2.XMLHTTP")
}
}
catch(e)
{
return new XMLHttpRequest()
}
}
我一起去Cletus对jQuery的建议,同时还检查了jQuery Form插件,它非常强大且易于使用,可以快速将表单通过Ajax转换为工作模式。
我建议以下Sergey's advise或写一个小的,不太复杂的补丁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:看this blogpost背后MSXML版本的新选择的理由...
功能CreateXmlHttpObj(){
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();
}
}
- 1. 处理无法实例化对象的最佳方法?
- 2. 最佳实践:调用getInstance方法来实例化对象
- 3. XMLHttpRequest对象没有被实例化?
- 4. 实例化许多JavaScript对象的最佳方式是什么?
- 5. 实例化JavaScript对象时的最佳做法是什么?
- 6. 为模型实例对象创建属性的最佳方法
- 7. C++中的对象实例化方法
- 8. 实例化对象的方法
- 9. Singleton - 实例化类的最佳方式
- 10. 注入实例化无法控制的类的最佳方法?
- 11. “否定”实例的最佳方法
- 12. 初始化变化对象的最佳方法
- 13. ILGenerator实例化对象和调用实例方法
- 14. 本地化实体的最佳方法?
- 15. 在Coq中执行通用实例化的最佳方法
- 16. 防止类被实例化的最佳方法?
- 17. 实例化EntityManager的最佳实践
- 18. 访问类方法到实例方法的最佳方法
- 19. 实例化对象的魔方__set()
- 20. 找到对象实例化的地方
- 21. 对象实例化
- 22. 实例化对象
- 23. 跨多个对象共享对象实例的最佳方式是什么?
- 24. 引用类或其他对象的其他实例的最佳方法?
- 25. 获取iframe对象的最佳方法
- 26. 合并ActiveRecords对象的最佳方法?
- 27. 保存父对象的最佳方法
- 28. 在另一个实例中创建对象的最佳方法--java
- 29. 以最简单的方式实例化一个对象数组?
- 30. 阿贾克斯XMLHttpRequest实例方法ivocation
作为额外的信息,这个主题也将是有用的:[JavaScript的:我应该使用,Microsoft.XMLHTTP或Msxml2.XMLHTTP?](http://stackoverflow.com/q/1919582/814702) – informatik01 2013-10-22 11:57:30