两个tomcats之间的Ajax调用

时间:2012-09-27 07:18:46

标签: javascript ajax jsp

我正在使用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并且好吧

3 个答案:

答案 0 :(得分:2)

onreadystatechange未正确关闭,请更改以下代码:

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

进入这个:

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

答案 1 :(得分:2)

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

如果您确实需要从外部服务器加载数据,可以尝试使用JSONP。可以通过Google找到示例,例如here.

答案 2 :(得分:0)

Ajax用于两个不同的tomcats之间。如果我们完成以下设置

IE - &gt;工具 - &gt;互联网选项 - &gt;安全 - &gt;自定义级别 - &gt;其他 - &gt;访问数据源跨域 - &gt;启用

此设置应在请求IE端

时完成