为什么两个不同的服务器之间没有ajax工作?

时间:2011-05-07 16:10:57

标签: php jquery ajax

也许我做错了但是在你的服务器/本地上尝试这个样本如果我有ajax.php文件本地并运行请求本地它工作但是一旦ajax.php是远程它不会工作。

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p></p>



<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<script type="text/javascript">

$(document).ready(function() 
{

    window.setInterval(function() 
    {
        $.ajax({
            url: 'ajax.php',
            type: 'GET',
            dataType: 'json',
            cache: false,
            success: function(result) 
            {
                $('p').html(result.price);
            }
        });
    }, 2000);


});

</script>
</body>
</html>

3 个答案:

答案 0 :(得分:4)

JavaScript只能加载来自同一主机的数据,这称为SameOrginPolicy。简而言之,这大致意味着嵌入在ServerA上的HTML文件中的JavaScript代码只能通过AJAX从ServerA请求文档。这样做是出于安全原因。

如果您确实需要从外部服务器加载数据,可以尝试使用JSONP。可以通过Google找到示例,例如here

答案 1 :(得分:2)

Javascript不允许跨域请求。我最近提出了一个非常类似的问题,可能会为您提供有用的答案:3 ways to make a cross-domain request in Javascript

以下是其他一些内容:

  • 使用ajax XMLHttpRequest调用提取所需请求的服务器端脚本。即PHP和cURL
  • json get request
  • jquery ajax request http://api.jquery.com/jQuery.ajax/
  • cURL,文件获取内容和AJAX (回显html或json)
  • 使用闪存的跨域
  • 你可以使用 Access-Control-Allow-Origin:*中 来自服务器的标头 其他域名。唯一的问题是依赖于浏览器 然而,现代。不适用于IE 8岁以上。见 https://developer.mozilla.org/En/HTTP_access_control

答案 2 :(得分:0)

这是因为Javascript的原始政策相同。出于安全原因,Javascript是使用此策略构建的。

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

但是,您可以使用JSONP发出跨域请求。