2012-04-06 6 views
0

Я собираюсь реализовать функцию поиска для системы управления sms, где пользователь может ввести имя (ключевое слово) и получить соответствующую информацию.Передача значений из сервлета в 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' имя сервлета. это код «» 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-й выходе запуска «для тестирования ключевых слов является ::: Джона» второго прогона «Для тестирования Ключевого слова является :::»

Я думаю, что второй запуск происходит из-за «$ .getJSON() ". Как этого избежать?

Как я могу использовать метод $ .getJSON() только для получения «таблицы строк», но не для запуска метода doGet()?

Есть ли другой способ получить строку из сервлета в jsp с помощью ajax?

Могу ли я передать это ключевое слово, используя метод $ .getJSON()?

Спасибо!

+0

'.getJSON()', безусловно, делает другой вызов сервлета, но в этом конкретном запросе он не отправляет ключ. Таким образом, это полностью объясняет второй пробег без ключевого слова в выходе. Вы не хотите, чтобы он снова вернулся к сервлету? Если нет, то каково было первоначальное намерение метода '.getJSON()', чтобы кто-то мог помочь вам разобраться в том, что нужно для аксинга? –

ответ

1

Вы можете использовать сокращенную вызов AJAX.

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

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

      $("#resultTable").html(data.messageRes); 
     }); 
2

Я не на 100%, следуя коду, но я хочу, чтобы вы только хотели запросить сервлет один раз, с ключевым словом, которое вы передаете. Таким образом, метод .ajax() уже выполняет ту же работу, что и .getJSON(), что в любом случае является псевдонимом для .ajax().

Выстрел в темноте, но я думаю, что вы хотите:

// ... 
}).success(function(data) { 
    $("#resultTable").html(data.messageRes); 
    }); 
// ... 
+0

благодарит заранее – Anjula

Смежные вопросы