【问题标题】:Unable to send json data to Java servlet using AJAX无法使用 AJAX 将 json 数据发送到 Java servlet
【发布时间】:2021-07-09 03:46:41
【问题描述】:

我正在尝试将数据表的 json 数据和用户输入的电子邮件传递给我的 java servlet。我得到一个状态 200 但没有数据响应。我在这里有我的 AJAX 代码:

$.ajax({
  url: "/bin/abc/sendrohssearchresult",
  type: "POST",
  contentType: "application/json",
  data:{
     "email": email,
     "emailSubject": emailSubject
  },
  success: function(status){
      console.log("success",status);
  },
  error:function(error){
      console.log("error",error);
  },
})

还有我的 Java servlet:

@Component(service= Servlet.class,
        property={
                Constants.SERVICE_DESCRIPTION + "=Send Email of RoHS Search Results",
                "sling.servlet.methods=" + HttpConstants.METHOD_POST,
                "sling.servlet.paths="+ "/bin/abc/sendrohssearchresult"
        })
public class RohsEmailServlet extends SlingAllMethodsServlet {

    @Override
    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        String email = request.getParameter("email");
        String emailSubject = request.getParameter("emailSubject");
    }

}

我已经尝试过我在 stackoverflow 上找到的其他解决方案,例如 JSONify 数据、删除 dataType: json 并添加 contentType: application/x-www-form-urlencoded; charset=UTF-8; 但仍然是相同的结果。我正在使用 AEM。

【问题讨论】:

  • 所以?您不会在处理程序方法中向响应写入任何内容。 (值得一提的是,直接处理 servlet 是非常低级的,我强烈建议使用像 Spring MVC 或 Micronaut 这样的合理框架。此外,您需要阅读有关 HTTP 事务的基础知识,因为“正文的内容”和“请求参数”是不可互换的。)
  • @chrylis-cautiouslyoptimistic- 我应该在我的问题中提到这一点,但我使用的是 Adob​​e Experience Manager (AEM)
  • 如果您的 servlet 的代码是整个代码,那么您在响应中没有收到任何内容是有道理的,因为您没有在 servlet 中发送任何响应。添加一个记录器并查看 email 和 emailSubject 中的值是否在您的 servlet 中通过。如果是这样,那么您可以使用可以通过response.getWriter() 获得的 PrintWriter 对象进行响应。由于您使用的是 POST 方法,请确保 CSRF 过滤器和 Referrer 过滤器不会阻塞您的请求(以防请求未到达 servlet)
  • @rakhi4110 谢谢!我现在明白了。

标签: java ajax servlets aem


【解决方案1】:

正如@rakhi4110 提到的,我需要添加response.getWriter() 才能接收数据响应。所以我补充说:

response.getWriter().write("Success Data");

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    相关资源
    最近更新 更多