将值从servlet传递给jsp

时间:2012-04-06 04:21:03

标签: jquery ajax json jsp servlets

我将为短信管理系统实现搜索功能,用户可以输入名称(关键字)并获取相关信息。

这是我在“InstantSMS.jsp”中编写的代码


  $("#search").click(function() {

        var keyword = $("#customerName").val();
        $.ajax({

            type : "GET",
            url : "SearchingClass",
            data : {
                key : keyword
            }

        }).success(function() {

            $.getJSON('SearchingClass', function(data) {

              $("#resultTable").html(data.messageRes);
            });


        })

        .error(function(request, error) {

            $().toastmessage('showWarningToast', "Error! ");
        });

    });

这里'SearchingClass'是servlet的名称。 这是'SearchingClass.java'的代码


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

    String keyword = request.getParameter("key");
    SmsMessagesService search = new SmsMessagesService();
    ArrayList<Customers> result = new ArrayList<Customers>();
    System.out.println("For testing Keyword is  ::: "+keyword);

    result = search.searchCustomer(keyword);
    String table = "in here i'll generate a code to draw a table using html"

    Map<String, Object> data = new HashMap<String, Object>();
        data.put("messageRes", table);


    // Write response data as JSON.
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(new Gson().toJson(data));    
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

    doGet(request,response);

}

现在的问题是我按搜索按钮后搜索过程或doGet方法运行2次。

在第一次运行中输出 “测试关键字是::: john” 第二轮 “测试关键字是:::”

我认为第二次运行是因为“$ .getJSON()”方法而发生的。 怎么避免这个?

如何才能使用$ .getJSON()方法获取“String表”但不能运行“doGet()”方法?

是否有另一种方法可以使用ajax从servlet获取字符串到jsp?

我可以使用$ .getJSON()方法传递此关键字吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

我不是百分之百遵循代码,但我想象你只想查询servlet一次,用你传递的关键字。因此,.ajax()方法已经完成与.getJSON()相同的工作,.ajax()无论如何只是// ... }).success(function(data) { $("#resultTable").html(data.messageRes); }); // ... 的别名。

在黑暗中拍摄,但我的猜测是你想要这个:

{{1}}

答案 1 :(得分:1)

您可以使用速记AJAX调用。

var keyword = $("#customerName").val();

$.get("SearchingClass", {key:$keyword}, function(data) {

            $("#resultTable").html(data.messageRes);
        });