【问题标题】:jQuery / Ajax fetches local but not remote pages [duplicate]jQuery / Ajax 获取本地但不获取远程页面 [重复]
【发布时间】:2011-12-02 04:35:12
【问题描述】:

可能重复:
XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin

我仍然不明白为什么这段代码在加载本地服务器页面 (localhost) 时可以正常工作,但在尝试获取远程数据时不显示任何内容

$(document).ready(function(){

    $.get(
    "message.html",
    function(data) { $("div").html(data); },
    "html"
    );
});

显示远程 html 文件没有错误但没有数据:

$(document).ready(function(){

    $.get(
    "http://viralpatel.net/blogs/2009/04/jquery-ajax-tutorial-example-ajax-jquery-development.html",
    function(data) { $("div").html(data); },
    "html"
    );
});

问候

【问题讨论】:

  • 这里可能重复:http://stackoverflow.com/questions/3595515/xmlhttprequest-error-origin-null-is-not-allowed-by-access-control-allow-origin
  • 看起来不像。他的问题是他正在尝试使用 ajax 进行跨域请求,这是不允许的。他必须在发出调用然后返回结果的同一域上创建一个服务器端页面。

标签: jquery ajax


【解决方案1】:

有一个内置限制可以防止来自浏览器的跨域 Ajax 请求。几乎所有浏览器都实现了这一点。

有一些变通方法,例如文章here 或使用JSONP。但这是对从浏览器发送的 Ajax 请求的基本限制。如果您使用的是 ASP.NET,Encosia 也有一个很好的技巧来做proxying using a custom HttpHandler

另见:Cross Domain Limitations With Ajax - JSON

【讨论】:

  • $(document).ready(function(){ $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){ $.each(data.items, function(i,item){ $("<img/>").attr("src", item.media.m).appendTo("#images"); if ( i == 3 ) return false; }); }); });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 2012-03-30
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多