跨域jquery 1.6.2 ajax调用试图从同一个域调用

时间:2011-09-10 15:29:16

标签: javascript jquery cross-domain

我在另一个域名域名(api.domainb.com)上设置了api,并希望从域名A(www.domaina.com)拨打电话。但是,当我通过jquery ajax从域A到域B进行调用时,jquery最终试图调用www.domaina.com/api.domainb.com,这显然会返回错误。这是相关的JavaScript代码

    $.ajax(
      url: 'http://api.domainb.com',
      type: 'GET',
      dataType: 'jsonp',
      data: {hello: 'world'}, 
      crossDomain: true,
      success: function(data){
        alert(JSON.stringify(data))
      }, 
      error: function(error){
        alert(JSON.stringify(error))
      });

最终,域A和域B中的代码将位于同一个域中,但是现在,我需要进行跨域调用。关于如何使这项工作的任何建议?

2 个答案:

答案 0 :(得分:2)

您无法进行跨域通话;浏览器根本不允许它。但是,您看到所描述的行为的原因是您的网址缺少“http://”前缀。

您可以使用fairly new HTML5 APIs对“获取权限”进行跨域调用进行排序。

编辑 @Dan正确地指出,虽然XMLHttpRequest(人们通常称之为“ajax”)不会做跨域的东西(除了CORS),但可以利用{{{ 1}}标签可以引用其他域以组合服务。但是,服务器端代码必须不同。 (通常称为“JSONP”。)

答案 1 :(得分:2)

您只是错过了协议,因此Ajax调用知道它是一个不同的域而不是相对URL。尝试使用url: 'http://api.domainb.com'