Javascript AJAX跨域请求
我在我的主域上有我的JavaScript文件,我想从子域进行一些调用 我补充说:Javascript AJAX跨域请求,javascript,jquery,ajax,cross-domain,Javascript,Jquery,Ajax,Cross Domain,我在我的主域上有我的JavaScript文件,我想从子域进行一些调用 我补充说: url: "http://domain.com/ajax.php" 因此,完整的代码是: $.ajax({ type: "POST", url: "http://domain.com/ajax.php", data: { var1: var1, var2: var2 }, suc
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
$.ajax({
dataType: 'jsonp',
data: 'id=10',
jsonp: 'jsonp_callback',
url: 'http://localhost/ajax.php',
success: function (data) {
console.log(data);
},
});
而ajax.php包含:
<?php
echo $_GET["id"];
?>
假设您拥有jQuery 1.5+,您可以使用:
$.ajax({
crossDomain:true,
type: "POST",
url: "http://domain.com/ajax.php",
data: {
var1: var1,
var2: var2
},
success: function(data){
}
});
从文档中:
跨域(增加1.5)
默认值:对于相同域请求为false,对于跨域请求为true
如果希望在同一个域上强制执行跨域请求(如JSONP),请将crossDomain的值设置为true。例如,这允许服务器端重定向到另一个域假设您有jQuery 1.5+,您可以使用:
$.ajax({
crossDomain:true,
type: "POST",
url: "http://domain.com/ajax.php",
data: {
var1: var1,
var2: var2
},
success: function(data){
}
});
从文档中:
跨域(增加1.5)
默认值:对于相同域请求为false,对于跨域请求为true
如果希望在同一个域上强制执行跨域请求(如JSONP),请将crossDomain的值设置为true。例如,对于子域调用,这允许服务器端重定向到另一个域。您有两个选项:
对于子域调用,您有两个选项:
您可以使用
Access Control Allow Origin
头来启用跨域请求
阅读以下内容:您可以使用
访问控制允许源站
标题来启用跨域请求
阅读以下内容:这两个域是什么?您的服务器出错了吗?目前我正在本地主机上测试,没有错误,只是没有返回任何内容。请尝试在实际域上测试。本地主机到域的问题更大,不过请参阅下面可能的解决方案。这两个域是什么?您的服务器出错了吗?目前我正在本地主机上测试,没有错误,只是没有返回任何内容。请尝试在实际域上测试。localhost到域的问题更大,尽管可以在下面看到可能的解决方案。使用jsonp,它甚至不会在子域上执行ajax请求发布您的jsonp代码(在调用方和被调用方双方),我来看看。啊,您的响应需要json格式:
{id:5}
例如。将vots.php更新为$array=array('id'=>$\u GET[“id”]);echo json\u encode($array);给出格式化的json..但在子域上,我单击按钮时,它似乎甚至没有看到有ajax请求,因为firebug上没有发生任何事情…它甚至没有显示请求我看到您指定了jsonp回调。为了简单起见,现在就这样做:$.getJSON('http://localhost/ajax.php?id=10&callback=?,函数(数据){console.log(data)});
使用jsonp,它甚至不会在子域上执行ajax请求发布您的jsonp代码(在调用方和被调用方双方),我来看看。啊,您的响应需要json格式:{id:5}
例如,将vots.php更新为$array=array('id'=>$\u GET[“id”]);echo json\u encode($array);给出格式化的json..但在子域上,我单击按钮时,它似乎甚至没有看到有ajax请求,因为firebug上没有发生任何事情…它甚至没有显示请求我看到您指定了jsonp回调。为了简单起见,现在就这样做:$.getJSON('http://localhost/ajax.php?id=10&callback=?,函数(数据){console.log(数据)});