AJAX跨域请求

我的主域上有我的JavaScript文件,我想从子域进行一些调用。

我已经添加了:

url: "http://domain.com/ajax.php" 

所以完整的代码是:

  $.ajax({ type: "POST", url: "http://domain.com/ajax.php", data: { var1: var1, var2: var2 }, success: function(data){ } }); 

但是在Firebug上,它将请求显示为红色并且无法响应。 POST参数也应该如此。

我应该在子域上创建一个新的JS文件并添加必要的代码并从那里进行AJAX调用吗?

编辑:使用JSONP代码

我在localhost/ajax.php上使用它,我从sub.localhost调用sub.localhost

  $.ajax({ dataType: 'jsonp', data: 'id=10', jsonp: 'jsonp_callback', url: 'http://localhost/ajax.php', success: function (data) { console.log(data); }, }); 

并且ajax.php包含:

  

您可以使用Access-Control-Allow-Origin标头启用跨域请求。

阅读: 跨源资源共享(CORS)

假设你有jQuery 1.5+,你可以使用:

 $.ajax({ crossDomain:true, type: "POST", url: "http://domain.com/ajax.php", data: { var1: var1, var2: var2 }, success: function(data){ } }); 

来自DOCS:

crossDomain(已添加1.5)

Default: false for same-domain requests, true for cross-domain requests

如果要在同一域上强制执行跨域请求(例如JSONP),请将crossDomain的值设置为true。 例如,这允许服务器端重定向到另一个域

对于子域名调用,您有两个选择:

  1. 双方都使用document.domain 。

  2. 使用jsonP,通过jQuery 1.5的crossDomain ajax规范,或直接使用 。