【问题标题】:can you give me an example of cross domain [duplicate]你能给我一个跨域的例子吗[重复]
【发布时间】:2012-12-29 10:29:38
【问题描述】:

可能重复:
Ways to circumvent the same-origin policy

例如,我有一个 2 个域“http://domain1.com/info.php”,另一个是“http://domain2.com/script.html

现在第一个域“http://domain1.com/info.php”正在发布这样的 json 编码数据

{
    "str_info": [
        {
            "str_name": "Mark",
            "str_age": "22"
        },
        {
            "str_name": "Aliza",
            "str_age": "52"
        }
    ]
}

第二个域“http://domain2.com/script.html”所做的是检索和操作第一个域给出的数据。

我不知道如何连接和检索来自第一个域“http://domain1.com/info.php”的数据到脚本的第二个域。 如果可能的话,你能告诉我如何使用 jsonp、jquery、ajax

【问题讨论】:

  • JSON-P 是你要找的,见json-p.org
  • 你能告诉我如何将 ajax 与 jsonp 一起使用吗?我不知道如何从这个开始.. tnx 进行响应

标签: php javascript jquery ajax jsonp


【解决方案1】:

来自 jQuery.org

由于浏览器安全限制,大多数“Ajax”请求都受制于 同源政策;请求无法成功检索 来自不同域、子域或协议的数据。

脚本和 JSONP 请求不受同源策略限制。

如果跨域工作,您可以使用称为JSONP 的方法 ajax 请求添加一个参数?callback=callbackname 并且您的服务器回答为

callbackname
(
    {
        "str_info": [
            {
                "str_name": "Mark",
                "str_age": "22"
            },
            {
                "str_name": "Aliza",
                "str_age": "52"
            }
        ]
    }
);

然后该函数在您的客户端上执行。 您可以使用jQuery 非常简单地完成此操作

$.getJSON("http://domain1.com/info.php?callback=?", function(data) {
  alert("success");
});

在 PHP 中,你会像这样包装你的结果(简单示例)

echo $_GET['callback'], '(' , json_encode( $data ), ')';

【讨论】:

  • ,函数(数据){警报(数据); })
  • 是的,你是对的——更好的例子
【解决方案2】:

使用回调函数发送数据,例如

callback({
  "str_info":[{"str_name":"Mark","str_age":"22"},{"str_name":"Aliza","str_age":"52"}]
});

然后在接收数据的域上使用函数

<script>
    function callback(i){
    //maniputlate i (json data) here
    }
</script>
<script type="text/javascript" src="http://domain1.com/info.php"/>

【讨论】:

  • 并加载到脚本标签中 - 作为 JSONP
  • 很抱歉应该提到,但是使用回调和函数的想法意味着在脚本标签中加载是不言自明的:P
猜你喜欢
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
  • 2021-09-09
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 2012-08-23
相关资源
最近更新 更多