Java 使用ajax调用Servlet并返回响应(JQuery)

Java 使用ajax调用Servlet并返回响应(JQuery),java,ajax,servlets,response,Java,Ajax,Servlets,Response,我从Servlet开始,我不理解我的问题。 我调用了一个Servlet,感谢JQuery,我希望Servlet将数据返回给JS 我的JS代码: $.ajax({ url:'http://localhost:8080/hello/servlet', data:'{field:"abc"}', type:'post', cache:false, success:function(data){alert(data);}, error:function()

我从Servlet开始,我不理解我的问题。 我调用了一个Servlet,感谢JQuery,我希望Servlet将数据返回给JS

我的JS代码:

$.ajax({
    url:'http://localhost:8080/hello/servlet',
    data:'{field:"abc"}',
    type:'post',
    cache:false,
    success:function(data){alert(data);},
    error:function(){alert('error');}
}
);
还有我的Servlet:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet{
        protected void doGet(HttpServletRequest req, HttpServletResponse response)
            throws ServletException, IOException
        {
  //Do nothing  import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet
{
    protected void doGet(HttpServletRequest req, HttpServletResponse response)
        throws ServletException, IOException
    {
        //Do nothing
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse response)
        throws ServletException, IOException
    {
        String field = req.getParameter("field");
        PrintWriter out = response.getWriter();

        response.setContentType("text/html");
        response.setHeader("Cache-control", "no-cache, no-store");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Expires", "-1");

        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type");
        response.setHeader("Access-Control-Max-Age", "86400");


        out.println("<html>");
        out.println("<body>");
        out.println("You entered \"" + field + "\" into the text box.");
        out.println("</body>");
        out.println("</html>");
    }
}
servlet不返回任何内容。。。 有什么问题吗


仅供参考,当我在浏览器中转到localhost:8080/hello/servlet时,它会工作。

当您访问localhost:8080/hello/servlet时,它是如何工作的?你所说的“有效”到底是什么意思?访问url会在GET方法上自动发送HTTP请求,但doGet方法不会执行任何操作。此外,您确定已在web.xml部署描述符中正确映射servlet吗?response.setHeaderAccess-Control-Allow-Headers,Content Type;这难道不意味着除了内容类型之外不允许任何标题吗?这样做的意义是什么?还有数据:{field:abc},那不应该是数据:{'field':'abc'},?丹尼尔:事实上,doGet方法和doPost方法是一样的。它之所以有效,是因为我看到了我想要的:当我在localhost:8080/hello/中时,我看到一个表单,它在localhost:8080/hello/servlet中重定向,并执行doPost方法。developerwk:我不知道这是什么意思,我从一个网站上复制/粘贴,我认为这很好。感谢您的错误,也许这就是问题的原因。我更正了两个错误字段&delete setHeaderAccess Control Akkiw Headers。。。。执行时,我收到一条警告:跨源请求被阻止:同源策略不允许读取远程资源。仅供参考,我在web.xml中添加了过滤器交叉源代码。