【问题标题】:Ajax jquery request to another domainAjax jquery 请求到另一个域
【发布时间】:2011-09-20 22:20:38
【问题描述】:

所以我在域 example.com (http://www.example.com/ajax/paste.php) 的服务器目录中有一个名为 paste.php 的 php 文件 php 文件如下所示:

<?php
$id=($_GET['create']);
$paste=($_GET['paste']);
$toly=($_GET['toly']);
if($id=='create'){
echo "hello";}
else{
echo "world";
} ?>

在具有不同域的另一台服务器中,我有一个简单的 html 文件 (www.example/demo/index.html) 我正在尝试对上面的 php 文件进行 ajax 调用,但没有成功 我的 jquery 看起来像:

var url="http://www.example.com/ajax/paste.php";
s="create=create&paste=hello&toly=this";
$.ajax({
   type: "GET",
    xhrFields: {
      withCredentials: true
   },
   url: url,
   data: s,
   success: function(msg){
   alert(msg);
   },error:function (jqXHR){
                    alert(jqXHR.status.error);
                }  
 }); 

我做错了什么?

编辑:忘记 xhr 我只想取回我作为响应所做的字符串 有什么办法吗?

【问题讨论】:

标签: php jquery ajax


【解决方案1】:

通过 JavaScript,您可以在文档头部动态创建新元素。当您这样做时,浏览器可以从您在那里指定的任何域中请求数据。如果被调用的代码包含某个函数的执行,那么该函数将能够链接到您的代码。这是一个例子:

    var head = document.getElementsByTagName("head")[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;
    head.appendChild(script);

您还需要在脚本中定义一个函数:

    function success(abc){
        alert('Yey'+abc);
    }

其他域的脚本应该如下所示:

    success('some_data_here');

该数据也可以是 JSON。当 JSON 与这样的函数调用结合使用时,它被称为 JSONP。

在此处进一步阅读:

http://en.wikipedia.org/wiki/JSONP

【讨论】:

    【解决方案2】:

    除非您执行Cross Origin Resource Sharing,否则您无法执行跨域 XHR。 same origin policy 阻止你。

    【讨论】:

      【解决方案3】:

      您可以使用服务器端代理或编码您的服务以支持 JSONP。

      http://devlog.info/2010/03/10/cross-domain-ajax/

      编辑:哦,是的,请看一条评论。查看其他线程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        • 2014-09-27
        • 1970-01-01
        • 2013-07-02
        • 2016-04-01
        • 1970-01-01
        • 2016-08-15
        相关资源
        最近更新 更多