代码之家  ›  专栏  ›  技术社区  ›  Morteza Milani

Ajax和REST:我可以向REST服务发送Ajax请求以接收响应吗?

  •  0
  • Morteza Milani  · 技术社区  · 15 年前

    我想使用moootools和squezbox类来处理对RESTful服务的请求。我不想使用任何服务器端脚本。我使用的是Ajax。我使用get方法向以下URL发送请求。 http://www.idevcenter.com/api/v1/links/links-upcoming.json 但我收到一个404错误。是因为跨站点脚本吗?这是我的代码:

    SqueezeBox.initialize({handler:'url',ajaxOptions:{method:'GET'}});
    $('a.modal').addEvent('click',function(e){
        new Event(e).stop();
        SqueezeBox.fromElement($('a.modal'));
    });
    

    在Firebug控制台中,有时显示“已中止”,有时显示“404”。这有什么问题?

    2 回复  |  直到 15 年前
        1
  •  2
  •   T.J. Crowder    15 年前

    xmlhttpRequest受 Same Origin Policy ;如果您的javascript运行的文档与您尝试调用的服务的来源不同,出于安全原因,将不允许调用。

    现在有一个提议的标准 cross-origin resource sharing 解决这个问题。可能是您尝试使用的服务支持它;如果支持,那么使用实现CORS(最新版本的Firefox和Chrome Do,以及其他一些版本)的浏览器可能会起作用。IE8 supports it 但需要你做额外的工作。

        2
  •  0
  •   Pointy    15 年前

    不能使用xmlhttpRequest(即普通的“ajax”)调用不在您的域中的服务器上的服务。

    但是,您可以使用jsonp技巧,它利用了浏览器 从其他域加载javascript。但是,服务必须知道您将要这样做,并且它必须理解协议。这个特定的服务似乎非常愿意给我一个JSON响应,但是当我给它一个“回调”参数时,它并没有注意到。(我尝试过“call back”和“jsonp”,返回的json blob是相同的,没有函数调用包装器。)