我有一个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);
答案 0 :(得分:1)
如果您的servlet可以通过网络浏览器或curl
访问,则问题出在客户端。
您在哪里托管JavaScript,即运行此JavaScript代码的网页的网址是什么?如果不是localhost:8080
,则很遗憾您遇到same-origin-policy。要验证是否请添加Can I disable SOP (Same Origin Policy) on any browser for development?中描述的代码段 - 在您接受Firefox中的更改后,它应该可以正常工作。
最简单的正确解决方案是将您的js
文件放在Eclipse中的某个位置,并将其部署到Tomcat,以便在localhost:8080/Checkers/some-file.js
(同一域)下可用。