我将为一个短信管理系统实现一个搜索功能,用户可以在其中输入名称(关键字)并获取相关信息。
这是我在“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() 方法传递这个关键字吗?
谢谢 !