【问题标题】:jQuery ajax does not call ServletjQuery ajax 不调用 Servlet
【发布时间】:2013-03-28 00:48:25
【问题描述】:

在这第 2 天挣扎。 我有一个带有标签列表的选择选项表单。 我想根据所选标签显示数据库中的文章。我的 index.jsp 中有一个 div“showArticles”,我想在其中显示文章。 我为此目的使用 jquery 和 ajax。 我编写了名为 test 的 Servlet,我只输出了一个简单的字符串,但我什至无法接收到文本,似乎我的 servlet 从未被调用过。 servlet 在名为“servlets”的包中,我使用的是 NetBeans。

这是表格:

                            <select id="b_sub_tag" name="b_sub_tag">
                                <option value='${0}'>Subject</option>
                                <c:forEach var="item" items="${subtagList}">
                                    <option value='${item}'>${item}</option>
                                    <c:set var="i" value='${i+1}'> </c:set>
                                </c:forEach>
                            </select>

这是jquery:

$(document).ready(function(){       
$("#b_sub_tag").change(function(){       
    var option_value = $(this).children('option:selected').val();

    $.ajax({
                   type: "POST",
                   url: "test",
                   data :"value="+option_value,
                   success: function(html) {
                               $("#showArticles").html(html);
                   }
           });
});

  });

这是 Servlet:

@WebServlet(name = "test", urlPatterns = {"/test"})
public class test extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
        /* TODO output your page here. You may use following sample code. */
        //response.getWriter().write("Omething");

    } finally {            
        out.close();
    }
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);

    response.getWriter().write("Smething");

}

@Override
public String getServletInfo() {
    return "Short description";
}// </editor-fold>
}

我试过了 PrintWriter out = response.getWriter(); out.println("某事");

同样,什么都没有。 我在 doPost() 中写入输出,我尝试在 doGet 和 processRequest 中写入,但没有运气。

有人知道为什么这不起作用吗?


问题已解决。我已将代码更改如下:

 $.ajax({
        url : "test",
        type: 'GET',
        ***data: {value:option_value},***

        error : function(jqXHR, textStatus, errorThrown) {
            alert(textStatus);
        },
        success : function(html){
           $("#showArticles").html(html);
           }
        }
    });

小服务程序:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    try {

        final InitialContext context = new InitialContext();
        statefulb = (StatefulBeanRemote)     context.lookup("java:comp/env/StatefulBeanRemote");


        response.setContentType("text/plain");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write("A text"); 

    } catch (NamingException ex) {
        Logger.getLogger(LoadArticlesByTag.class.getName()).log(Level.SEVERE, null, ex);
    }
}

【问题讨论】:

  • 请将答案作为答案发布并标记为已接受。不要像在老式论坛中那样将其放在问题中并在标题中放置一些奇怪的标签。
  • 谢谢。我没有注意到我可以为我的问题添加答案!

标签: jquery ajax jsp servlets


【解决方案1】:

问题已解决。我已将代码更改如下:

$.ajax({ 网址:“测试”, 类型:'GET', *数据:{value:option_value},*

    error : function(jqXHR, textStatus, errorThrown) {
        alert(textStatus);
    },
    success : function(html){
       $("#showArticles").html(html);
       }
    }
});

小服务程序:

@覆盖 protected void doGet(HttpServletRequest 请求,HttpServletResponse 响应) 抛出 ServletException,IOException { 试试 {

    final InitialContext context = new InitialContext();
    statefulb = (StatefulBeanRemote)     context.lookup("java:comp/env/StatefulBeanRemote");


    response.setContentType("text/plain");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write("A text"); 

} catch (NamingException ex) {
    Logger.getLogger(LoadArticlesByTag.class.getName()).log(Level.SEVERE, null, ex);
}

}

【讨论】:

    【解决方案2】:

    尝试将您的网址更改为 /test:

    $.ajax({
                       type: "POST",
                       url: "/test",
                       data :"value="+option_value,
                       datatype : "html",
                       success: function(html) {
                                   $("#showArticles").html(html);
                       }
    });
    

    【讨论】:

    • 您好!谢谢您的回复。我尝试了很多变化,但没有运气!
    • 虽然 $.get('test',function(data) { $('#showArticles').text(data);}; 有效!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多