AJAX 调用响应文本为空

AJAX call responseText empty

本文关键字:文本 响应 调用 AJAX      更新时间:2023-09-26

我有一个小而简单的应用程序。它在Tomcat 7.测试火狐浏览器上。我的网页位于

%CATALINA_HOME%''webapps''examples''servlets.因此,我使用以下URL访问我的html页面:

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

我的java servlet(调用第三方API并返回文本/html响应)驻留在%CATALINA_HOME%''webapps''examples''WEB-INF''classes中。

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

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

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

我的 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都在同一个文件夹中。请帮忙。

在您的代码中,有不需要的大括号(请参阅我的代码片段中的 和),将其删除。第二件事是你为什么要使用连接=关闭,如果你真的不需要它,请删除它。

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");
}
}

通过将本地主机替换为 127.0.0.1 来修复它。