这是我第一次使用AJAX,我想在静态页面www.xyz.org/some_site.html上执行以下操作:
"www.xyz.org/testscript"
status code != 200
或content != 'ok'
:什么都不做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专家都能给我一个单行解决方案......
答案 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会再次导致原始问题(禁止跨域调用)。