Я формулирую Ajax-запрос, используя прототип в следующем методе:
function updateServerStep(stepNumber){
alert("updating server step to " + stepNumber);
var params = {stepNumber:stepNumber};
alert(params.stepNumber);
var request = new Ajax.Request('UpdateStep', {
method:'Post',
parameters:params,
onSuccess: function(transport){
alert("Step changed to " + stepNumber);
},
onFailure: function(transport){
alert("Failed!");
}
});
}//updateServerStep
И у меня есть сервлет, который пытается получить параметр, который я добавил в метод ajax, но не находит никаких параметров в объекте запроса. И если я попытаюсь получить атрибут, который я установил, он будет указан как нулевой.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(true);
Integer pageNumber = (Integer)request.getAttribute("stepNumber");
if (pageNumber != null){
System.out.println("page number was "+ pageNumber.intValue());
session.setAttribute("secPayStepNum", pageNumber);
} else {
System.out.println("page number was null");
session.setAttribute("secPayStepNum", new Integer(0));
}
}
Правильно ли я создаю запрос Ajax или я ошибаюсь при получении параметров?
EDIT
Я изменил JavaScript, чтобы убрать путаницу в названии следующим образом:
function updateServerStep(stepNumber){
alert("updating server step to " + stepNumber);
var params = {step:stepNumber};
alert(params["step"]);
var request = new Ajax.Request('UpdateStep', {
method:'Post',
parameters: {'step':"1"},
onSuccess: function(transport){
alert("Step changed to " + stepNumber);
},
onFailure: function(transport){
alert("Failed!");
}
});
}//updateServerStep
Сторона Java все еще не получает никаких параметров, я добавил цикл, который выводит все параметры из request.getAttributeNames (); следующим образом:
Enumeration names = request.getAttributeNames();
System.out.println("Enumerating Attributes:");
while( names.hasMoreElements()){
System.out.println("[ELEMENT] "+ names.nextElement().toString());
}
и он ничего не делает, кроме вывода строки перед циклом.
Я также попытался поместить больший массив в параметры, и это тоже не работает, цикл все еще не повторяется.
Я запустил конец Java в режиме отладки, и атрибуты не отправляются. По крайней мере, не так далеко, как Ява.
Я также попытался изменить параметры на параметры: "step = 1 & garbage: 'hello world' & foo = 'bar'", потому что документы по прототипам говорят, что вы можете сделать это без атрибутов на стороне сервера. Я изменил режим, чтобы получить и добавил его к URL, и нет никаких атрибутов ...