如何从ajax在自托管servlet上调用

How to call a on a self hosted servlet from ajax

本文关键字:servlet 调用 ajax      更新时间:2023-09-26

我有一个servlet,它将数据作为xml页面发布。我在JavaEE的EclipseIDE中制作了它,并将它托管在Tomcat服务器上。servlet托管在http://localhost:8080/Checkers/CheckersServlet.我可以在firefox中打开那个url,它会很好地加载xml。如何从ajax代码调用servlet?

我认为它应该是下面的代码,但这对我来说不起作用。(其中displayResult(req)是一个自定义函数,它对从servlet接收的xml执行我想要的操作)。我已经通过调试确认问题不是从servlet接收任何xml。

我需要制作其中一个web.xml文件吗?或者,当我点击"新Servlet"时,这是由Eclipse处理的吗

var req = new XMLHttpRequest();
    req.onreadystatechange = function()
    {   
        if(req.readyState == 4)
        {
            displayResult(req);
        }
    }
    var url = "http://localhost:8080/Checkers/CheckersServlet"; 
    req.open("GET",url,true);
    req.send(null);

如果您的servlet可以通过web浏览器或curl访问,那么问题就出在客户端。

您在哪里托管JavaScript,即运行此JavaScript代码的页面的URL是什么?若不是localhost:8080,则很遗憾您遇到了同源策略。为了验证,请添加我可以在任何浏览器上禁用SOP(同源政策)中描述的代码片段进行开发吗?-在您接受Firefox中的更改后,它应该可以工作。

最简单正确的解决方案是将js文件放在Eclipse中的某个位置,并将其部署为Tomcat,以便在localhost:8080/Checkers/some-file.js(同一域)下可用。