【问题标题】:Ajax with RequestDispatcher not working带有 RequestDispatcher 的 Ajax 不起作用
【发布时间】:2013-11-15 18:16:51
【问题描述】:

我在 JSP 中创建了一个表单,比如 first.jsp

    <input type="radio" name="actionType" value="edit_notice" class="noticeaction">Edit 
    <input type="radio" name="actionType" value="delete_notice" class="noticeaction">Delete 
    <input type="radio" name="actionType" value="post_notice" class="noticeaction">Post Notice 
    <br/><br/><br/>

    <input type="submit" name="reviewNoticeSubmit" value="Submit" id="reviewNoticeSubmit">

ajax调用所在的jQuery:

else if(actionToPerform == "edit_notice")
            {
                var noticeId = $(".selectednotice").val();
                var param = "noticeId=" + noticeId;

                jQuery.ajax({
                    type:"POST",
                    url : "reviewnoticeaction/editnotice",
                    data : param,
                    beforeSend : function() {

                    },
                    complete : function() {

                    },
                    success : function(data) {

                    },
                    error : function(xmlHttpRequest, textStatus, errorThrown) {
                        alert("Error occured. Unable to open editor");
                    }

                });

            }

下面是从数据库中获取一些值并分配给属性的 servlet 代码,我正在尝试将其转发到另一个 jsp 页面。它不工作。

request.setAttribute("firstData", editNoticeRs.getString("firstData"));
                    request.setAttribute("secondData", editNoticeRs.getDate("secondData"));
                    request.setAttribute("thirdData", editNoticeRs.getDate("thirdData"));

RequestDispatcher rd = request.getRequestDispatcher("second.jsp");
    rd.forward(request, response);

PS:如果我不能将它转发到另一个jsp,是否可以在同一个jsp页面中获取值并访问该值?如果是怎么办?

【问题讨论】:

  • jquery ajax 方法本身就是一个 HTTP 客户端。它可以发送请求和接收响应。它收到的响应与您当前正在查看的浏览器页面无关。

标签: ajax jsp servlets


【解决方案1】:

对于 Ajax,您不需要从 servlet 分派到 JSP。只在 servlet 中做所有事情会更简单。是的,在 Ajax 中,您可以读取 servlet 的输出。这就是成功函数中的“数据”变量的用途。

 success : function(data) {
   alert(data);
 },

当然,如果您愿意,您仍然可以从您的 servlet 分派到 JSP。可能它似乎不起作用的原因是您对返回的输出没有做任何事情。

【讨论】:

  • 感谢@developerwjk,我想知道如何在成功方法中设置变量“数据”的值。我应该在 servlet 中做什么来获取我想要在数据中获取的值(目前我的数据变量是空的)。
  • 我已经发布了如何从 servlet 返回数据的答案
【解决方案2】:

如果您想从 servlet 简单调用将 JSON 或字符串数​​据返回到 ajax 成功处理程序

PrintWriter out=response.getWriter();
out.println("String Data to return");

或者如果是json

PrintWriter out=response.getWriter();
StringBuilder data = new StringBuilder()
data.append("{");
data.append("'name':");
data.append("'arock',");
data.append("'Language':");
data.append("'Java'");
data.append("}");
out.println(data.toString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2013-08-27
    相关资源
    最近更新 更多