我將爲短信管理系統實現搜索功能,用戶可以在其中輸入名稱(關鍵字)並獲取相關信息。將servlet的值傳遞給jsp
這是我在 「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次。
在第一次運行輸出 「爲了測試關鍵字:::約翰」 第二次運行 「爲了測試關鍵字:::」
我認爲,第二次運行是因爲「$ .getJSON發生()「 方法。 如何避免這種情況?
如何使用$ .getJSON()方法只獲取「字符串表」而不運行「doGet()」方法?
是否有另一種方法使用ajax從servlet到jsp的字符串?
可以使用$ .getJSON()方法傳遞此關鍵字嗎?
謝謝!
'.getJSON()'當然對servlet進行了另一個調用,但是在那個特定的請求中它並沒有發送密鑰。這完全解釋了輸出中沒有關鍵字的第二次運行。你不希望它回到servlet嗎?如果不是,'.getJSON()'方法的初衷是什麼,以便有人可以幫助你找出需要砍掉什麼? – 2012-04-06 04:27:56