我是Web开发的初学者(自学),我试图通过AJAX将我的javascript .js文件连接到Java servlet。它没有进行AJAX调用,也没有输入Java代码,而是返回了回调函数。我的网址映射或路径指定正确吗?还是可以看到其他错误?谢谢!
JS代码:一个= parseInt(document.getElementById(“ num” + 0).value);
var xhr = new XMLHttpRequest();
xhr.open("GET", "/add?num1=" + a , true ); // true is for Asynchronous request
alert("here3 a=" + a);
xhr.send();
var ret = eval(xhr.responseText); //just trial
alert("eval" + ret);
xhr.onreadystatechange = () => {
if(xhr.readyState == 4 && xhr.status == 200){
document.getElementbyId('ajaxResponse').innerHTML = xhr.responseText;
var ret = eval(xhr.responseText);
alert("Callback1 = " + ret);
}
else(alert("Callback failed"))
};
Java servlet:
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
System.out.println("Add Servlet called");
int i = Integer.parseInt(req.getParameter("num1"));
// int j = Integer.parseInt(req.getParameter("num2"));
// int k = i+j;
PrintWriter out = res.getWriter();
out.println("Result is i=" + i);
res.setContentType("text/plain");
res.getWriter().write(i);
}
Web.xml
((servlet):callJavacom.AddServlet
((servlet-mapping):callJava/ add
仅在回调函数的其他情况下才起作用(“回调失败”)。另外,如果映射是在.xml文件中完成的,则servlet或js文件的位置/文件夹结构是否重要?谢谢!
由于我对您使用的框架不熟悉,因此我无法真正为您提供服务器端的帮助。但是以下是我对客户端代码的建议:
let
代替var
;true
标志不需要使请求异步,因为它是默认标志,将很快被弃用。addEventListener
API,而不是直接将处理程序添加到预期的目标。open
和send
之前完全设置您的请求。===
运算符代替==
。const a = parseInt(document.getElementById("num" + 0).value);
let xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange', (e) => {
if(e.target.readyState === 4){
document.getElementbyId('ajaxResponse').innerHTML = e.target.responseText;
}
});
xhr.open("GET", "/add?num1=" + a);
xhr.send();
请让我知道它是否有效。如果是这样,您可能要检查服务器是否正确设置了“找到的”响应代码(200)。