Ajax获取请求的问题

时间:2011-01-16 21:21:27

标签: ajax jquery

我有这个功能的问题:

<!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>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<title>Untitled Document</title>
<script type="text/javascript">
jQuery(document).ready(function(){
$.get("http://www.boersenpoint.de/pages/charts/shareSupplier.php?request=topFlop",     {     indexName: "DAX" } ,function(data){   
  $(data).find('share').each(function(){
 alert('');
 });

 });
 });
 </script>
 </head>

<body>
</body>
</html> 

Firebug找不到任何错误。理论上应该出现4个警报,但不会出现。为什么呢?

2 个答案:

答案 0 :(得分:1)

问题是same-origin policy。这意味着除非您所在的页面也在该域上,否则您无法对域执行AJAX请求。

解决问题的最简单方法是在您的服务器上设置代理请求的脚本 - 您向服务器发出请求,服务器向其他服务器发出请求并将响应反馈给您

如果远程服务器支持它,你也可以使用JSONP,但我怀疑这是可能的,因为页面是一个XML文档。

答案 1 :(得分:1)

$(function(){
  $.get("http://www.boersenpoint.de/pages/charts/shareSupplier.php?request=topFlop", {indexName: "DAX"}, function(data) {
    $(data).find('share').each(function(){
      alert('');
    });
  });
});

您的代码存在一些问题......

  1. 您正在通过same origin policy
  2. 明确禁止的ajax发出远程请求
  3. 即使您没有违反该政策,也不能保证您会看到提醒 - 如果data为空,该怎么办?如果是,则.find('share').each将无法执行==&gt;没有警觉。
  4. 有些浏览器(大部分都是旧的)实际上忽略了alert();语句,如果它不包含文本(我不知道你的空字符串,只需要记住一些东西)。
  5. 总而言之,在这种情况下,您的具体问题是同源政策违规。 2.和3.是为了您未来发展的利益。