提问人:Andrew G. Johnson 提问时间:1/15/2010 更新时间:1/15/2010 访问量:839
JQuery AJAX GET 返回一个空文件
JQuery AJAX GET returning an empty file
问:
我试图通过 AJAX 获取 http://lib.softvoyage.com/cgi-bin/gate_dest_hotels.xml?code_ag=nwi&alias=tpi&language=en&with_cdata=y 但是它不断返回 nadda(这里的 firebug 屏幕截图:http://img683.imageshack.us/img683/3279/firebug.jpg)
代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Search Form</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<form method="post" action="#">
<label for="gateway_dep">Leaving From:</label>
<select id="gateway_dep" name="gateway_dep">
<option value="">Select a gateway</option>
<option value=""></option>
<option value="">Loading gateways</option>
</select>
</form>
<script type="text/javascript">
<!--
$(document).ready(function() {
$.ajax({
url:"http://lib.softvoyage.com/cgi-bin/gate_dest_hotels.xml?code_ag=nwi&alias=tpi&language=en&with_cdata=y",
cache:false,
dataType:"text",
type:"GET",
success:function(xml) {
alert(xml);
}
});
});
-->
</script>
</body>
</html>
答:
1赞
RHicke
1/15/2010
#1
您只能在与当前页面位于同一域中的页面上使用 AJAX。如果要从外部源获取数据,则必须使用 getJSON 函数,而其他站点必须以 getJSON 可以处理的形式返回数据。
或者,您可以使用一个服务器端代理,该代理在不存在 AJAX 限制的服务器端执行 get 请求,然后将数据返回到您的页面。
评论
0赞
Andrew G. Johnson
1/15/2010
啊,你是对的,出于某种原因,跨域甚至没有作为一个问题进入我的脑海
0赞
Nick Craver
1/15/2010
#2
您无法通过 $.ajax 调用向另一个域发出请求,这里有一个关于工作回合的好帖子: http://www.wait-till-i.com/2010/01/10/loading-external-content-with-ajax-using-jquery-and-yql/ 这是一项安全措施,可以防止您在页面上的广告/iframe 收集我在页面上的登录信息,然后将其上传到另一个网站。
你最好的选择是你自己的域名上的代理,或者使用YQL方法并通过雅虎,这在上面的博客中有详细说明。
评论