0

ユーザーが名前(キーワード)を入力して関連情報を取得できるSMS管理システムの検索機能を実装します。

これは私が「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」はサーブレットの名前です。これは「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回実行した後です。

1回目の実行で出力"テスト用のキーワードは:::john"2回目の実行で"テスト用のキーワードは:::"

「$.getJSON()」メソッドが原因で2回目の実行が行われていると思います。これを回避する方法は?

$ .getJSON()メソッドを使用して、「文字列テーブル」を取得するだけで、「doGet()」メソッドを実行しないようにするにはどうすればよいですか?

ajaxを使用してサーブレットからjspに文字列を取得する別の方法はありますか?

$ .getJSON()メソッドを使用してこのキーワードを渡すことはできますか?

ありがとうございました !

4

2 に答える 2

2

私はコードを 100% 守っているわけではありませんが、渡しているキーワードを使用して、サーブレットに対して 1 回だけクエリを実行したいと考えています。したがって、このメソッドは、とにかくの単なるエイリアスであると.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 に答える