为什么不在两个不同的服务器之间运行ajax?
也许我做错了什么,但尝试此示例在您的服务器/本地如果我有本地ajax.php文件并运行请求本地它的工作原理,但一旦ajax.php是远程它不会工作。为什么不在两个不同的服务器之间运行ajax?
<!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>
JavaScript只能从同一主机加载数据,这称为SameOrginPolicy。简而言之,这大致意味着嵌入在ServerA
上的HTML文件中的JavaScript代码只能通过AJAX请求来自ServerA
的文档。这是出于安全原因而完成的。
这是因为Javascript的同源策略。出于安全原因,Javascript是基于此策略构建的。
http://en.wikipedia.org/wiki/Same_origin_policy
但是,你可以用JSONP跨域请求。
你能告诉我一个样本基于我有什么?日Thnx。我试图做的是做一个从shopify.com到允许服务器端代码的另一个服务器的ajax调用,而shopify.com只允许html,css和javascript – 2011-05-07 16:15:48
我提供的答案有什么区别? – theomega 2011-05-07 16:16:54
@theomega它是一个不同的作者(我)。在我写解决方案时,您可能首先发布了您的解决方案。我不认为这是给我投票的理由。我并不是很傻,“复制”另一个人的解决方案,我的等级就是证明。 – 2011-05-07 16:38:54
Javascript不允许跨域请求。我问了一个非常类似的问题最近,可能有用的答案给你:3 ways to make a cross-domain request in Javascript
这里有几个:
- 使用Ajax XMLHttpRequest来调用服务器端脚本获取所需的请求。即PHP和卷曲
- JSON get请求
- jQuery的Ajax请求http://api.jquery.com/jQuery.ajax/
- 卷曲,文件获取内容,而AJAX (回声HTML或JSON)使用闪光灯
- 您可以使用
- 跨域 访问控制允许来源: 其他域上的服务器上的 标题中的*。然而,只有这个问题是依赖于现代的浏览器 。不会在IE 比8年长看到工作 https://developer.mozilla.org/En/HTTP_access_control
我该怎么办两个不同的服务器之间的AJAX? – 2011-05-07 16:14:15
看到我上面的修改。 – theomega 2011-05-07 16:15:12
谢谢,我发现这个网站http://sprain.ch/blog/2010/07/07/jsonp-jquery-and-php-make-cross-domain-ajax-calls-work/,我想知道为什么不能尝试$ .ajax而不是$ .getjson,它的工作原理,但我喜欢你给更多的网站上的例子。谢谢 – 2011-05-07 16:54:38