Javascript 跨域jquery 1.6.2 ajax调用正在尝试从同一域调用

Javascript 跨域jquery 1.6.2 ajax调用正在尝试从同一域调用,javascript,jquery,cross-domain,Javascript,Jquery,Cross Domain,我在另一个域,域B(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: 'js

我在另一个域,域B(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中的代码将在同一个域中,但现在,我需要进行跨域调用。关于如何实现这一点有什么建议吗?

您不能进行跨域呼叫;浏览器一般不允许这样做。但是,您看到所描述行为的原因是您的URL缺少“http://”前缀

你可以做一些事情来获得跨域调用的“权限”


edit@Dan正确地指出,虽然XMLHttpRequest(人们通常称之为“ajax”)不会做跨域的事情(CORS除外),但可以利用
标记可以引用其他域来组合服务这一事实。但是,服务器端代码必须不同。(通常称为“”)

您不能进行跨域调用;浏览器一般不允许这样做。但是,您看到所描述行为的原因是您的URL缺少“http://”前缀

你可以做一些事情来获得跨域调用的“权限”


edit@Dan正确地指出,虽然XMLHttpRequest(人们通常称之为“ajax”)不会做跨域的事情(CORS除外),但可以利用
标记可以引用其他域来组合服务这一事实。但是,服务器端代码必须不同。(通常称为“)

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

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

我不是这方面的专家,但只要服务器端愿意合作,IIRC您可以使用JSONP绕过限制。在幕后,它使用
script
标记而不是XHR来工作。是的,这是真的,但当然不是真正的XHR:-)不过我会澄清答案。谢谢是的,但我认为jQuery在其
ajax
调用中抽象出这种差异的关键在于XHR和JSONP真正实现了相同的功能。争论定义当然很棘手,但我从未认为“AJAX”只意味着XHR。我100%同意。用更严格的定义来平衡“常用术语”的含义是很棘手的,我想后者的用途有限。我尝试添加“http”(现在反映在问题的代码中),但遇到了与以前相同的问题。我不是这方面的专家,但IIRC您可以使用JSONP来绕过限制,只要服务器端准备好合作。在幕后,它使用
script
标记而不是XHR来工作。是的,这是真的,但当然不是真正的XHR:-)不过我会澄清答案。谢谢是的,但我认为jQuery在其
ajax
调用中抽象出这种差异的关键在于XHR和JSONP真正实现了相同的功能。争论定义当然很棘手,但我从未认为“AJAX”只意味着XHR。我100%同意。要平衡“常用术语”的含义和更严格的定义是很棘手的,我想后者的用途有限。我尝试添加“http”(现在反映在问题的代码中),但我遇到了与以前相同的问题。在这个问题的原始版本中,我将url作为url:'api.domainb.com'。建议我将其更改为“”。问题原始版本中的代码已更新以反映这一点。我尝试添加“http://”,但没有改变-我有相同的问题。在这个问题的原始版本中,我的url为url:'api.domainb.com'。建议我将其更改为“”。问题原始版本中的代码已更新以反映这一点。我尝试添加“http://”,但没有改变-我遇到了相同的问题。