AJAX:重定向问题

时间:2009-11-09 08:56:31

标签: javascript ajax

这是我第一次使用AJAX,我想在静态页面www.xyz.org/some_site.html上执行以下操作:

  • 向另一个网址"www.xyz.org/testscript"
  • 发送GET请求
  • 如果回复有status code != 200content != 'ok':什么都不做
  • else:在网站上加入某些内容(例如,在之前有style="display:block"的元素上设置"display:none"

我已经使用基本的AJAX成功实现了它。但是:

安装了一个Apache重定向,从www.xyz.org/testscript指向subdomain.xyz.org/testscript,这是实际测试脚本所在的URL(因为AJAX不支持跨域调用,甚至支持subdomains afaik)。

当我致电www.xyz.org/testscript时,我会收到一个302状态代码,内容显示“该文档已移至此处:subdomain.xyz.org/testscript”。

如何获取'最终'返回值?

我想/希望任何AJAX专家都能给我一个单行解决方案......

2 个答案:

答案 0 :(得分:3)

重定向不会欺骗AJAX(或XMLHttpRequest为精确)。为了能够从另一个域获取内容,您需要在服务器上使用代理。以下是一个简单的PHP代理:

if(strpos($_GET['q'], "http://") === 0){
  echo file_get_contents($_GET['q']);
}

像这样使用它:

xhr.open(GET, "www.xyz.org/proxy.php?q=subdomain.xyz.org/testscript", true);

答案 1 :(得分:0)

根据上述评论,答案是:

不可能实现我想做的事情,因为AJAX不会被欺骗进行重定向。

编辑:我尝试通过在subdomain.xyz.org/another.js添加另一个javascript文件并将我的静态html网站中的所有AJAX代码放入其中来解决此问题。

然后,在静态html网站上,我用普通的

包含了这个脚本

<script src="subdomain.xyz.org/another.js">

标签。但这也行不通......欺骗自己:在我的静态页面上包含javascript会再次导致原始问题(禁止跨域调用)。