JQuery - $ .ajax POST不会将.data发送到Web服务器

时间:2011-04-08 14:11:47

标签: jquery ajax jsp post

我正在使用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

5 个答案:

答案 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);
    }
});