代码之家  ›  专栏  ›  技术社区  ›  Stefan Steiger Marco van de Voort

Ajax和Firefox?

  •  0
  • Stefan Steiger Marco van de Voort  · 技术社区  · 16 年前

    我试图通过Ajax在HTML中填充一个DIV。 数据来源是谷歌搜索的“必应”很烂。

    我用

    loadXMLDoc('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Bing%20sucks')
    

    它在InternetExplorer中工作,但不适用于Firefox/Chrome。 如果我只从本地域(test.txt)加载一个文件,那么它就工作了。

    我做错什么了?

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html>
        <head>
        <title>AJAX</title>
    <script language="javascript">
    
    
    
    function loadXMLDoc(url)
    {
        if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open("GET",url,false);
        xmlhttp.send(null);
        document.getElementById('test').innerHTML=xmlhttp.responseText;
    }
    
    
    </script>
    </head>
    
    <body>
    
        <div id="lol">
            lol
        </div>
    
    <div id="test">
    <h2>Click to let AJAX change this text</h2>
    </div>
    
    
    <button type="button" onclick="loadXMLDoc('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Bing%20sucks')">Click Me</button>
    <button type="button" onclick="loadXMLDoc('test.txt')">Click Me</button></body>
    </html>
    
    2 回复  |  直到 16 年前
        1
  •  3
  •   SLaks    16 年前

    不能使用Ajax从另一个域读取数据。

    您需要在您的域中编写一个服务器端脚本,向Google发送请求并将结果转发给您。

        2
  •  3
  •   Community Mohan Dere    8 年前

    这里是常见的“just use jquery”帖子!

    为什么不使用jquery?它将消除所有浏览器的不一致性:

    <script type="text/javascript" src="/jquery.js"></script>
    <script type="text/javascript">
    var url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Bing%20sucks';
    $.getJSON(url + "&jsoncallback=?", function(data){
       $('#test').html(data);
    });
    </script>
    

    您需要一些服务器端编程来拦截请求以绕过跨域问题。通常,您不能从一个域向另一个域发出Ajax请求。

    查看jquery文档 .getJSON . Previous question 性质相似。