我知道,这是一个受欢迎的主题,但我们仍未找到答案,是完全全面的。

我试图建立一个简单的方式为我们的"客户"将一个谷歌地图在他们的网站,其图谋的位置我们的客户(或其子集)在地图上。客户在一个数据库,这是变成XML on-the-fly通过a PHP script(每个谷歌的例子)。这一工作的现在我的网站,但当我试试上另一个网站的程序是不允许的看PHP,因为它是在另一个领域。

我可以避开此写的另一个PHP文件上的其他领域简单地读取PHP文件的原域。但不是我们所有的客户将有PHP上运行他们的服务器。是否有任何办法,我可以返回XML结果从我们的数据库使用JavaScript?

几点:

  1. JavaScript,使程序仍然坐在 我们 服务器--我们的客户链接到它从脚本标记。我想这可能是足够的,但'原籍国'(根据铬,无论如何)是仍然看作领域#2

  2. 这是巨大的:如果我使用一个绝对的基准的程序(例如请求。open('到','http://mydomain.com/api/foo.php',true))那么它将无法在即,但是,如果我使用相对基准('/api/foo.php')会的工作。

  3. 我不知道足够关于它,但我可以使用JSON?我已经看到:'脚本src="http://..../someData.js?callback=some_func"' 但不知道怎么样,我会'someData.js'看起来像JSON?(我在想很多方面的功能,这很可能是不正确的?).

  4. 我已经试过添加:header("访问控制的允许来源地:*");到顶部的PHP输出XML,但它不是真的在做我可以告诉!

  5. 如果我使用一个PHP wrapper对客户的服务器,是什么使用一卷的请求,而不是简单的file_get_contents或fopen?

对不起,很多的问题,但任何指导,将是极大的赞赏。

大规模的谢谢

有帮助吗?

解决方案

一个简单的方法就是让你的PHP script返回的东西,如:

callback_function(YOUR_DATA);

然后在JS脚本上包括客户的网站,你插入一个动态 <script> 这已 src 指着你的PHP script:

(function() {
    var scriptElement   = document.createElement('script');
    scriptElement.type  = 'text/javascript';
    scriptElement.async = true;
    scriptElement.src   = 'http://example.org/yourScript.php?data=...';
    var container       = document.getElementsByTagName('script')[0];
    container.parentNode.insertBefore(scriptElement, container);
})();

这种技术被称为 和应该做的正是你想要的;)

另一种方式解决该问题将被允许跨领域的程序内容的安全政策。但我认为只有Firefox4支持,现在。

其他提示

你可以使用JSON而不是XML?如果是这样,你的选择方案3)是可能会是你最好的选择。有安全风险与这种做法,这只应用于已知的和可信赖的信息来源。

更多的阅读: http://www.codeproject.com/KB/aspnet/JSONToJSONP.aspx

JavaScript是客户端,但是该数据库是没有的。JavaScript可以不从一个数据库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top