我在试图查询的外部服务器上有一个数据库。为此,我将在本地服务器(Tomcat)上创建一个AJAX调用(只是XMLHttpRequest对象--我不使用任何JavaScript库),并附带一个查询。将完全相同的URL粘贴到Firefox中会导致它尝试下载XML文档。我的目标是使用AJAX获取XML文档。
我遇到的问题是,当我使用AJAX进行调用时,Firebug显示GET响应返回302“临时”,旁边是一个红色X。GET响应的头具有一个具有OAuth授权的位置参数,当我复制和粘贴位置参数时,它会带我到正确的页面(告诉我下载XML )。
编辑:--我使用jQuery的$.get("URL", function(data){alert(data)});进行了尝试--也发生了同样的事情--没有警报,而是红色的GET请求和Firebug中的302。
基于这些信息,我认为我调用的数据库首先试图将我重定向到某个OAuth,然后返回一个访问数据库的授权URL。这是我应该使用的调用数据库,获取XML对象,然后做我的事情。AJAX似乎无法处理重定向,而是崩溃了。
但是,我不确定这是否正确,因为我尝试使用以下代码:
else if (xmlhttp.readyState == 4 && xmlhttp.status == 302){
alert("Hello 302!");
}
else {
document.getElementById("test").innerHTML = "On state: " + xmlhttp.readyState + "<br />HTTP Status: " + xmlhttp.status;
}它并没有给我一个警告,而是显示它处于状态4和状态0。我不明白它为什么会返回状态0。(编辑:修正了答案1中提到的错误,没有任何改变)
所以我的问题是:
F 213
编辑和更新:,这是一个跨站点脚本问题。我在外部服务器上运行了完全相同的脚本,并能够检索和解析包含查询结果的XML文档。唯一的障碍是弄清楚如何从外部服务器执行此操作。我可以访问外部服务器的配置,并将研究如何操作它以允许通过其他站点的数据库查询进行访问。
发布于 2012-06-25 23:20:03
因为它是ajax请求,所以不能从另一个域( http://en.wikipedia.org/wiki/Same_origin_policy )中提取数据
这里所能做的就是从您自己的服务器(相同的域)请求数据,并让它从外部db中为您提取数据。
编辑:这个响应已经超过3年了,现在使用的是现代浏览器(不包括IE < 10),您可以使用跨源资源共享( https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS )
https://stackoverflow.com/questions/11163767
复制相似问题