2013-11-18 8 views
1

Я пытаюсь AJAX с Servlet в первый раз, вот код JQuery Ajax:не удается получить доступ к параметрам запроса AJAX в Servlet

$.ajax({ 
    type : 'POST', 
    url : '/myServlet', 
    contentType : 'application/octet-stream; charset=utf-8', 
    success : function(result) {alert(result)}, 
    processData : false, 
    data : authResult['code'] 
}); 

и вот сервлет:

public class Authorize extends HttpServlet { 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { 
     response.setHeader("Cache-Control", "no-cache"); 
     response.setHeader("Pragma", "no-cache"); 
     Date currentTime= new Date(); 
     String message = String.format("Currently time is %tr on %tD.",currentTime, currentTime); //printing this, echos in the ajax "success" function 
     response.getWriter().print(request.getParameterMap().toString()); //this, gives me blank Map "{}" 
    } 
} 


Теперь, когда параметр запроса ушел? Или как правильно их получить или отправить, если я ошибаюсь?

Как параметр ответа отправляется в AJAX в моем случае? И как отправить их в формате JSON?

Извините, если мои вопросы кажутся тривиальными, но я много искал в Интернете и не нашел подходящего ресурса.

+1

Вы уверены, что данные отправлены js? Не могли бы вы попытаться с данными: {paramName: authResult ['code']}? – ianaz

+0

Данные не установлены в парах имени и значении. Попробуйте получить доступ к телу запроса. – Taylor

+0

@ Тейлор скажи мне, как?! –

ответ

2

Вы отправляете запрос POST, поэтому ваши параметры находятся в теле запроса. Если вы хотите получить доступ к ним в качестве простых параметров, используйте GET:

$.ajax({ 
    type : 'GET', 
    url : '/myServlet', 
    contentType : 'application/octet-stream; charset=utf-8', 
    success : function(result) {alert(result)}, 
    processData : false, 
    data : authResult['code'] 
}); 

И сервлет doGet вместо doPost метода.

Если вам нужна должность: прочитайте тело запроса и проанализируйте его.

0

Я предлагаю вам взглянуть на JAX-RS/Jersey. Это просто делает вещи намного проще, особенно в общении с кодом javascript через AJAX и JSON.

0

Просто удалите строку

CONTENTTYPE: «приложения/октет-поток; charset = utf-8 ',

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