0

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

这是我在“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() 方法只获取“字符串表”而不运行“doGet()”方法?

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

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

谢谢 !

4

2 回答 2

2

我不是 100% 遵循代码,但我想你只想查询一次 servlet,并使用你传递的关键字。因此,该.ajax()方法已经在做同样的工作,无论如何.getJSON()它只是一个别名。.ajax()

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

// ...
}).success(function(data) {
    $("#resultTable").html(data.messageRes);
  });
// ...
于 2012-04-06T04:30:53.343 回答
1

您可以使用速记 AJAX 调用。

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

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

            $("#resultTable").html(data.messageRes);
        });
于 2012-04-06T04:38:59.447 回答