0

我有一个小而简单的应用程序。它在 Tomcat 7 上。在 Firefox 浏览器上测试。我的 html 页面位于

%CATALINA_HOME%\webapps\examples\servlets。因此,我使用 URL 访问我的 html 页面:

http://localhost:8080/examples/servlets/userinputs.html

我的 java servlet(调用第三方 API 并返回 text/html 响应)位于 %CATALINA_HOME%\webapps\examples\WEB-INF\classes 中。

我在我的 js 文件中使用 AJAX 调用通过 URL 调用这个 servlet:

http://localhost:8080/examples/servlets/servlet/challengetask

返回的 responseText 是空的。如果我从浏览器访问 servlet,我可以看到响应。我确实通过了同域策略并在互联网上搜索了类似的问题。但是,我无法弄清楚为什么 responseText 为空以及问题到底是什么。

我的 AJAX 调用:

var request =false;
if(window.XMLHttpRequest){
 request = new XMLHttpRequest();
}
else {
if (window.ActiveXObject) {
 try{
 request = new ActiveXObject("Microsoft.XMLHTTP"); 
}
catch(e){
} 
} 
}   


if(request){
 request.open("GET",url,true);
 request.onreadystatechange = callBack;
 request.setRequestHeader("Connection","Close");
 request.setRequestHeader("Method","GET"+url+"HTTP/1.1");
 request.send();
}
else {
alert("Sorry could not create an XMLHttpRequest");
}
}
function callBack(){
if(request.readyState == 4){
    if(request.status == 200){
    alert(request.responseText);
}
} }

PS:html和js都在同一个文件夹中。请帮忙。

4

2 回答 2

0

在您的代码中有不需要的大括号(参见我的代码段中的和),将其删除。第二件事是你为什么要使用connection=close,如果你真的不需要它就删除它。

if(request){
 request.open("GET",url,true);
 request.onreadystatechange = callBack;
 request.setRequestHeader("Connection","Close");
 request.setRequestHeader("Method","GET"+url+"HTTP/1.1");
 request.send();
}
else {
    alert("Sorry could not create an XMLHttpRequest");
}
}
于 2013-09-21T08:43:32.117 回答
0

通过将 localhost 替换为 127.0.0.1 来修复它。

于 2013-09-21T17:30:15.590 回答