AJAX调用失败,URL路径正确吗?

问题描述 投票:0回答:1

我是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文件的位置/文件夹结构是否重要?谢谢!

javascript java ajax servlets
1个回答
0
投票

由于我对您使用的框架不熟悉,因此我无法真正为您提供服务器端的帮助。但是以下是我对客户端代码的建议:

  • 使用let代替var
  • true标志不需要使请求异步,因为它是默认标志,将很快被弃用。
  • 最好使用新的addEventListener API,而不是直接将处理程序添加到预期的目标。
  • 在调用opensend之前完全设置您的请求。
  • 使用===运算符代替==
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)。

© www.soinside.com 2019 - 2024. All rights reserved.