跨域$ .ajax请求无效

时间:2012-07-06 17:29:29

标签: jquery ajax

下面是我试图用来显示另一个页面的HTML内容的代码。我无法让代码工作,每次都收到错误。我在这里缺少什么?

$.ajax({
    url: 'http://www.msn.com',  
    type: 'GET',
    dataType : "text/html",
    success: function (result) {
        alert('success');
        alert(result);
    },
    error: function() { 
       alert('error');
}
});

6 个答案:

答案 0 :(得分:3)

您无法执行跨域AJAX请求(除非专门为其设置服务器)。

您可以做的最好的事情是在您的服务器上调用PHP脚本,然后从另一台服务器获取HTML并将其发送回您的页面。

答案 1 :(得分:3)

由于浏览器安全限制,大多数“Ajax”请求都受same origin policy的约束;请求无法成功从其他域,子域或协议中检索数据。

脚本和JSONP请求不受相同的原始策略限制。

来源:http://api.jquery.com/jQuery.get/

答案 2 :(得分:2)

您只能向自己的域发出ajax请求。将它指向您自己的页面,您的成功函数将被调用。

答案 3 :(得分:1)

在Chrome中,打开Web Inspector(例如右键单击,检查元素)并转到“控制台”选项卡,然后运行该代码。然后,您将真正看到您正在触发的跨域脚本安全性错误。

答案 4 :(得分:1)

如果您确实打算执行跨域AJAX请求并且您正在寻找HTML响应,那么您可能需要查看this article by James Podolosky,在那里他讨论通过YQL管理这些请求并提供插件通过覆盖jQuery.ajax函数来自动执行此操作,允许您按照预期使用它。

答案 5 :(得分:1)

如果您使用外部API很好,可以使用YQL(但这并不完美)。

检查此fiddle,您会发现它有效。也许这不适合你,只是扔掉它。