0

我正在使用 ajax 函数调用一个 jsp(在另一个 tomcat 中)。但是我得到了任何回复..我把我的代码放在下面

这是我的 ajax 函数(在 tomcatA 中)

function connect(){
try{
// Firefox, Opera 8.0+, Safari
var xmlHttp=new XMLHttpRequest();
}catch (e){
// Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch (e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function(){
alert(xmlHttp.status);
if(xmlHttp.readyState==4){
}
}
url="http://IP:PORT/List/Get.jsp";
xmlHttp.open("GET",url+"?sid="+Math.random(),true);
xmlHttp.send(null);
}

下面是我的 Get.jsp(在 tomcatB 中)

<%@page import=" "%>
<%@page import=" "%>
<select>
<%Iterator it = HashMap.keySet().iterator();
while(it.hasNext()){
String key = (String)it.next();
String value = (String)HashMap.get(key);
%>
<option><%= key + " " + value %> </option>
<%}%>

</select>

但是,如果我直接从浏览器访问 Get.jsp,它的工作正常.. 我得到了带有数据的组合框(如我所料)。请帮我解决这个问题.. 我发誓 URL 和好的

4

3 回答 3

2

onreadystatechange 没有正确关闭,修改如下代码:

xmlHttp.onreadystatechange=function(){
   alert(xmlHttp.status);
   if(xmlHttp.readyState==4){
}

进入这个:

xmlHttp.onreadystatechange=function(){
    alert(xmlHttp.status);
    if(xmlHttp.readyState==4){
        // do sth
    }
}
于 2012-09-27T07:23:58.123 回答
2

JavaScript 只能从同一主机加载数据,这称为SameOrginPolicy。简而言之,这大致意味着嵌入在 ServerA 上的 HTML-File 中的 JavaScript 代码只能通过 AJAX 向 ServerA 请求文档。这样做是出于安全原因。

如果确实需要从外部服务器加载数据,可以尝试使用JSONP。示例可以通过谷歌找到,例如这里。

于 2012-09-27T08:38:09.783 回答
0

Ajax 在两个不同的 tomcat 之间使用。如果我们完成了以下设置

IE-->工具-->Internet选项-->安全-->自定义级别-->杂项-->跨域访问数据源-->启用

此设置应在请求 IE 端完成

于 2012-09-27T10:43:33.887 回答