跨浏览器AJAX函数动态加载HTML

时间:2009-01-11 01:46:39

标签: javascript ajax

我正在寻找一个动态请求HTML页面的AJAX函数。我已经找到了以下内容:

function ajaxinclude(url) 
{
   var page_request = false

   if (window.XMLHttpRequest) // if Mozilla, Safari etc
      page_request = new XMLHttpRequest()
   else if (window.ActiveXObject) // if IE
   { 

     try {
       page_request = new ActiveXObject("Msxml2.XMLHTTP")
     } 
     catch (e){
       try{
         page_request = new ActiveXObject("Microsoft.XMLHTTP")
       }
       catch (e){}
     }
   }
   else
     return false

   page_request.open('GET', url, false) //get page synchronously 
   page_request.send(null)
   return page_request.responseText;
 }

它在Firefox和Chrome中运行良好,但在以下行的IE中失败:

page_request.open('GET', url, false)

是否有更好的可用功能可以保证与浏览器完全兼容?

编辑:感谢所有伟大的建议......最后,我决定不在这里重新发明轮子。而我忘记提到的一件事是,我还需要它间隔更新...虽然我已经弄清楚了所以我不认为它有所作为。但后来我在原型中找到了很棒的Ajax.PeriodicUpdater()方法并且大大改变了我的想法。我刚从50 LOC解决方案到大约4行:)

6 个答案:

答案 0 :(得分:14)

我不得不同意,不要重新发明轮子,或者在这种情况下,AJAX。

JQuery和Prototype非常出色,让您不必处理跨浏览器支持,并大大简化了Javascript类型编程。我首先陷入JQuery,所以我偏向于它,从我看到的库有点小(阅读:在浏览器中更快),但我认为Prototype已经存在更长时间并且有大量的插件和示例在那里。 Ruby on Rails默认情况下也使用Prototype。有趣的是,两者中的代码看起来非常相似,并且几乎不需要重写来更改库。

JQuery Tutorials< - 直接进入AJAX部分

答案 1 :(得分:8)

如果您不需要整个框架,也可以试试这个:http://www.hunlock.com/blogs/The_Ultimate_Ajax_Object

答案 2 :(得分:6)

我建议使用任何一种不同的javascript框架来实现这一功能,而不是重新发明它。有jQueryPrototype/ScriptaculousMooToolsDojo等等。所有这些都为您正在做的事情提供跨浏览器支持。

答案 3 :(得分:3)

我推荐jQuery,但也有一个非常轻量级的解决方案:XHConn

答案 4 :(得分:2)

如果我是你,我会使用像JQuery这样的工具包,以确保它尽可能兼容。然而,无论如何,你将不得不处理它不起作用的情况。不要忘记,有很多人在没有javascript支持的情况下浏览。

答案 5 :(得分:2)

您可能使用脚本不支持的IE版本。在功能之前添加this code snippet再试一次。 ajaxinclude()可以缩短为

function ajaxinclude(url)  {
    var req = new XMLHttpRequest;
    if(!req)
        return null;

    req.open('GET', url, false); // get page synchronously 
    req.send();
    return req.responseText;
}

顺便说一句:我一般不喜欢使用框架 - 幕后有太多魔法让我感到舒服......