gpt4 book ai didi

java - Ajax 请求参数,我做错了什么?

转载 作者:行者123 更新时间:2023-11-30 18:58:32 25 4
gpt4 key购买 nike

我在以下方法中使用原型(prototype)制定 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

我有一个 servlet,它试图获取我放入 ajax 方法中的参数,但没有在请求对象中找到任何参数。如果我尝试获取我设置的属性,它会被列为 null。

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 请求,还是我在获取参数时犯了错误?

编辑

我已经更改了 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());


}

除了打印出循环之前的行之外,它什么都不做。

我也试过在参数中放置一个更大的数组,但也没有用,循环仍然没有迭代。

我已经在 Debug模式下运行 Java 端,但没有发送任何属性。至少在 java 看来不是。

我还尝试将参数更改为参数:"step=1&garbage:'hello world'&foo='bar'"因为 the Prototype docs say you can do that没有属性服务器端。我已经将模式更改为获取并将其附加到 url 并且没有属性...

最佳答案

使用 getParameterNames() 而不是 getAttributeNames()。

阅读:http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletRequest.html

看接口(interface)函数说明,了解它们之间的区别。

关于java - Ajax 请求参数,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/950878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com