回答
使用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. 處理無法實例化對象的最佳方法?
- 3. 最佳實踐:調用getInstance方法來實例化對象
- 4. 最佳對象實例化的方式集合的一部分
- 5. XMLHttpRequest對象沒有被實例化?
- 6. 實例化許多JavaScript對象的最佳方式是什麼?
- 7. 實例化JavaScript對象時的最佳做法是什麼?
- 8. 檢查實例是否正確實例化的最佳方法
- 9. 爲模型實例對象創建屬性的最佳方法
- 10. 使用每個等於null的鍵實例化對象的最佳方法?
- 11. 實例化對象的方法
- 12. C++中的對象實例化方法
- 13. 實例化結果集中的對象...最佳實踐?
- 14. Singleton - 實例化類的最佳方式
- 15. 在javascript實例化方法中實例化一個對象
- 16. 注入實例化無法控制的類的最佳方法?
- 17. 常量與按需實例化的對象 - 哪個是最佳?
- 18. 「否定」實例的最佳方法
- 19. 本地化實體的最佳方法?
- 20. 爲JQGrid序列化JSON對象的最佳/最快方法
- 21. 初始化變化對象的最佳方法
- 22. 類的實例方法?對象方法?
- 23. ILGenerator實例化對象和調用實例方法
- 24. 對象方法調用VS類方法調用。最佳實踐?
- 25. 實例化EntityManager的最佳實踐
- 26. 在Scala中實例化類型參數類的最佳方法
- 27. 在Coq中執行通用實例化的最佳方法
- 28. 防止類被實例化的最佳方法?
- 29. 類,實例/對象方法
- 30. 訪問類方法到實例方法的最佳方法
作爲額外的信息,這個主題也將是有用的:[JavaScript的:我應該使用,Microsoft.XMLHTTP或Msxml2.XMLHTTP?](http://stackoverflow.com/q/1919582/814702) – informatik01 2013-10-22 11:57:30