Jquery Ajax不起作用

时间:2011-08-17 21:55:47

标签: javascript ajax jquery rss

我的html中有以下div

<div class="result">loading</div>

我的javascript如下。

$(document).ready(function() {
      $.ajax({
          accept: 'application/rss+xml',
          url: 'http://www.madhyamam.com/taxonomy/term/19/rss.xml',
          success: function(data) {
            $('.result').html(data);
         }
    });
});

但由于某些原因......它似乎没有用。

jsfiddle

返回XML(firebug):

  

XML解析错误:找不到元素位置:   moz-nullprincipal:{9ec69805-af82-4f95-979a-f8e68d415124}行号   1,第1栏:

     

^

解决方案 * 我再见 - 使用雅虎管道传递问题。它工作正常。 *

2 个答案:

答案 0 :(得分:7)

您无法向与当前页面具有相同域,端口和协议的URL发出Ajax请求。 Same Origin Policy禁止它。

最常见的解决方法是使用服务器端脚本来提取内容,并通过Ajax提供服务。

答案 1 :(得分:0)

正如Pekka所提到的,我们猜测您的问题是Ajax无法对其他域URL发出请求。你必须使用服务器端脚本。

用于测试的小型php服务器端脚本示例(来自Jquery Minime Feed library):

<?php
header('Content-type: text/xml; charset=utf-8');
$url = htmlspecialchars($_GET['url']);
echo file_get_contents('http://'.$url,0); 
?>

然后你可以打电话给

$.ajax({
    accept: 'application/rss+xml',
    url: 'http://youserver/getfeed.php?url=http://www.madhyamam.com/taxonomy/term/19/rss.xml',
});

但是,您似乎希望在页面中显示rss Feed。我去了同样的问题并使用Jquery Minime Feed library结束,这有助于你完成这项工作:

$('#test1').minimeFeed('http://index.hu/24ora/rss/');

如果需要,自动使用服务器端脚本,并生成相当不错的输出。见demo here

希望它有所帮助!