ユーザーが名前(キーワード)を入力して関連情報を取得できる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()メソッドを使用してこのキーワードを渡すことはできますか?
ありがとうございました !