如何从ajax调用自托管的servlet

时间:2012-03-12 17:48:01

标签: javascript ajax servlets

我有一个servlet,它将数据发布为xml页面。我在Eclipse IDE for Java EE中创建它并将其托管在Tomcat服务器上。 servlet托管在http://localhost:8080/Checkers/CheckersServlet上。我可以在firefox中打开该URL并加载xml。如何从ajax代码调用servlet?

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

我是否需要制作其中一个web.xml文件?或者当我点击“new 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);

1 个答案:

答案 0 :(得分:1)

如果您的servlet可以通过网络浏览器或curl访问,则问题出在客户端。

您在哪里托管JavaScript,即运行此JavaScript代码的网页的网址是什么?如果不是localhost:8080,则很遗憾您遇到。要验证是否请添加Can I disable SOP (Same Origin Policy) on any browser for development?中描述的代码段 - 在您接受Firefox中的更改后,它应该可以正常工作。

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