繁体   English   中英

Ajax调用中的数据未传递到控制器

[英]Data in ajax call not being passed to controller

我在带有jQuery应用程序的Spring MVC中拥有以下简单的javascript:

        console.log("POST Variables:",postVariables);
        $.ajax({
            type: "POST",
            url: theUrl,
            traditional: true,
            data: postVariables,
            complete: modelCallback,
            fail : errorFunction
        });

控制台记录以下内容:

POST Variables: applicationId=977

哪个是对的。 我在我的控制器中有这个:

public  HashMap<String, Object> getApplication(HttpServletRequest request) {    
    String applicationId = (String) request.getParameter("applicationId");
    logger.error("ApplicationId:"+applicationId);
    Iterator<?> it = request.getParameterMap().keySet().iterator();
    logger.error("Begining parameters:"+request.getParameterMap().keySet().size());

这将为字符串applicationId生成null,并为参数映射大小生成0。 我最初用@RequestParam注释了该方法,但是失败了,我不知道为什么。 我删除了它,发现ajax调用没有发送任何内容。

我已经尝试过JSON,Javascript对象和(在此示例中)请求参数的字符串。 我尝试过有没有传统。

我在jQuery get函数的回调函数中使用此调用,如下所示:

    $.get(templateUrl).complete(callback);

但是为什么什么都没到达我的控制器?

更新如果我将其更改为GET,则会在调用结束时像应有的那样添加参数,并且一切正常。

更奇怪的是,它在一个函数中,该函数之前被调用过,并且它作为POST起作用。 相同的功能。 (当然还有不同的URL和数据),但具有相同的功能。 工作一次,然后看起来就失败了。 是否有需要关闭的插座? 我在这里抓稻草。

您应该将数据作为键值对传递给控制器​​,而不是等号。

例如,不,

applicationId=977

它应该是,

applicationId:977

将此添加到ajax请求。

$.ajax({
        type: "POST",
        url: theUrl,
        traditional: true,
        data: {applicationId : "Your application ID as a number"},
        complete: modelCallback,
        fail : errorFunction
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM