我正在尝试通过ajax填充html中的div。 数据源是谷歌搜索“bing sucks”
我用
调用方法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>
答案 0 :(得分:3)
这是通常的“只使用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请求。
请参阅.getJSON上的jQuery文档。具有类似性质的Previous question。
答案 1 :(得分:3)
您不能使用AJAX从其他域读取数据。
您需要在您的域上编写一个服务器端脚本,向Google发送请求并将结果转发给您。