我正在使用JQuery $ .ajax post命令在我的Web服务器上调用ajax事件:
var formParams = "fe1=y&fe2=m&fe3=m";
$.ajax({
type: 'POST',
url: '/foo.jsp',
async: false,
data: formParams,
complete: function(xmlRequestObject, successString){
ymmReceiveAjaxResponse(xmlRequestObject, successString);
}
});
ajax组件成功调用了网页,但它不包含任何发布数据
ie - "(HttpServletRequest) request.getParameterMap.size() == 0"
- 我期待3,但是我得到零。
将上述命令从POST更改为GET使一切正常。
TIA
答案 0 :(得分:5)
使用FireBug找到问题的原因并打开Net小工具。
我看到网络服务器在网页调用时响应状态302。
扩展Firebug / Net中的302请求,并检查Params,Headers,Response和HTML,快速确定它是源自服务器的特定于应用程序的问题。
感谢大家的反馈
答案 1 :(得分:1)
试试这个:
$.ajax({
type: 'POST',
url: '/foo.jsp',
async: false,
data: { fe1: "y", fe2: "m", fe3: "m" },
complete: function(xmlRequestObject, successString){
ymmReceiveAjaxResponse(xmlRequestObject, successString);
}
});
它应该有用。
答案 2 :(得分:1)
你的代码被引用很好(我在本地尝试过)。
我的猜测是你问题中的formParams
字符串只是一个例子,实际上你正在做一些事情来动态生成那个字符串,而问题在于那个代码。
例如,您确定要正确转义字符(使用encodeURIComponent
)吗?或者更好的是,让jQuery处理它,就像这样:
$.ajax({
type: 'POST',
url: '/foo.jsp',
async: false,
data: {
fe1: $("#somefield1").val(),
fe2: $("#somefield2").val(),
fe3: $("#somefield3").val()
},
complete: function(xmlRequestObject, successString){
ymmReceiveAjaxResponse(xmlRequestObject, successString);
}
});
如果传入一个对象,jQuery将为您处理URI编码。如果你真的想自己做:
var formParams =
"fe1=" + encodeURIComponent($("#somefield1").val()) +
"fe2=" + encodeURIComponent($("#somefield2").val()) +
"fe3=" + encodeURIComponent($("#somefield3").val());
$.ajax({
type: 'POST',
url: '/foo.jsp',
async: false,
data: formParams,
complete: function(xmlRequestObject, successString){
ymmReceiveAjaxResponse(xmlRequestObject, successString);
}
});
我没有编码字段名称,因为这些名称中没有任何特殊的字符;如果您的表单名称比这更有趣,那么您需要。
答案 3 :(得分:0)
经过四个小时的沮丧尝试后,我发现可以通过设置ajax contentType
中的POST
来实现此目的,
var dataToSend = {
"username" : $("#username").val(),
"password" : $("#password").val()
};
$.ajax({
type: "POST",
url: "somepage.jsp",
data: dataToSend,
contentType: "application/x-www-form-urlencoded; charset=UTF-8", //this is must
success: function(datum, msg, textStatus){
$("#result").html("<h3>" + "Status : " + msg + "</h3>")
.fadeIn("slow");
}
});
答案 4 :(得分:-1)
使用success
:
var formParams = "fe1=y&fe2=m&fe3=m";
$.ajax({
type: 'POST',
url: '/foo.jsp',
async: false,
data: formParams,
success: function(data) {
alert('response data = ' + data);
}
});