Ajax:从不同的域加载XML?

时间:2009-05-21 20:45:26

标签: javascript ajax cross-domain

我已注册(付费)Google网站搜索。他们有一个网络服务的网址,我可以向它发送查询,它搜索我的网站,它返回搜索结果的XML。好吧,我试图通过Ajax从我的网站上的页面加载这个XML,但我不能。我可以从我的域中的任何页面加载,因此我假设这是因为XML在Google域上。所以必须有一种方法来加载它,我不认为他们会给我URL如果我不能做任何事情大声笑。有谁知道怎么做?

谢谢!

更新

这就是谷歌在谷歌上说的给我XML的内容:

  

如何获取XML

     

您可以获得XML结果   通过替换查询+术语来搜索引擎   使用此网址中的搜索查询:

     

http://www.google.com/cse?cx=MY_UNIQUE_KEY&client=google-csbe&output=xml_no_dtd&q=query+terms

MY_UNIQUE_KEY =我的唯一密钥。

3 个答案:

答案 0 :(得分:3)

您无法使用AJAX加载外部文件。但是,您可以在自己的服务器上设置一个文件,使服务器上的内容可用。例如,在PHP中,您可以编写文件googlexml.php

<?php
@readfile("http://www.google.com/cse?cx=MY_UNIQUE_KEY&client=googlecsbe&output=xml_no_dtd&q=query+terms");
?>

然后你可以使用AJAX访问它。我不确定Google的使用条款是否允许您这样做,但如果他们这样做,那么这是一个选项。

答案 1 :(得分:1)

google是否无法将DNS地址转发到您服务的IP,将其折叠到您的域中?这样你就可以在AJAX中完成

googleAlias.mydomain.com

谷歌应该支持这一点,但我不确定。我想他们会像对待GMail和外域邮件一样。

删除您的跨域JavaScript问题

编辑我在下面进行了扩展,另一位用户帮助指出这应该有效(感谢Stobor)

好吧,为了让我的公司邮件进入GMail,如果我记得,我需要更改我的DNS上的MX记录以指向谷歌IP。如果Google支持,您可以将A记录添加到您的域中,以便对foo.yourdomain.com的AJAX请求与search.google.com或其他任何内容相同。 Google需要在A记录中识别来自您的主机名的请求,然后说“哦,是的,那就是我,代表我的客户”

答案 2 :(得分:0)

对于现在遇到这种情况的人来说,AJAX搜索API可能就是您想要的:http://code.google.com/apis/ajaxsearch/documentation/

编辑:实际上,经过进一步审核,可能不会与网站搜索挂钩......