Ajax jquery请求到另一个域

时间:2011-09-20 22:20:38

标签: php jquery ajax

所以我在一个带有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我只想取回我作为回复的字符串 有什么办法吗?

3 个答案:

答案 0 :(得分:2)

从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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

编辑:哦,是的,请看一个评论。看看另一个帖子。