Javascript AJAX跨域请求

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

我在我的主域上有我的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

    $.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。例如,对于子域调用,这允许服务器端重定向到另一个域。您有两个选项:

  • 两边都用

  • 通过jQuery1.5的跨域规范使用jsonP,或者


  • 对于子域调用,您有两个选项:

  • 两边都用

  • 通过jQuery1.5的跨域规范使用jsonP,或者


  • 您可以使用
    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(数据)});