jquery - AJAX 请求格式错误?问题出在哪里?

标签 jquery ajax spring model-view-controller

这是我的 AJAX 调用:

var dataString = "{existingProject:'"+ $("#existingProject").val() + "',newProjName:'" + $("#newProjName").val()+"'}";
$.ajax({
        type: "POST",
        url: "manageProjects.html",
        data: dataString,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            alert(msg.status + " " + msg.responseText);
            $("#grid").trigger("reloadGrid");
        },
        error: function (errormessage) {
            alert(errormessage.status + " " + errormessage.responseText);
        }
    });

..这是我希望处理请求的 Spring MVC Controller 中的方法签名:

@RequestMapping(value="/manageProjects",produces="application/json",method=RequestMethod.POST)
public StatusResponse manageProjects(
        @RequestParam("existingProject") String existingProj,
        @RequestParam("newProjName") String newProj,
        HttpSession session){

我一整天都在修改这个 ajax 调用,但我只是没有看到这个问题。我尝试过将 load 与数据参数 post 一起使用,并且我尝试过不设置 contentType 和 dataType 并使用它。

错误消息中的responseText告诉我该调用在语法上不正确......但不知道为什么......

我错过了一些愚蠢的事情。感谢您的任何见解...

最佳答案

我也遇到了同样的问题。我在firefox中使用tamper data插件来检查jquery发送的数据。有效负载为:

POSTDATA=message=test+message

我在 JQuery 请求上应用了 JayC 给出的修改,并且它有效。详情:

JayC给出的修改:

var dataString = JSON.stringify({
existingProject: $("#existingProject").val(),
newProjName: $("#newProjName").val()
});

我的要求:

      function post(dest) {
            var dataString = JSON.stringify({ message: 'test message'});
            jQuery.ajax({
                type: "POST",
                url: ndest,
                crossDomain: true,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: dataString,
                success: function (data, status, jqXHR) {                       
                },
                error: function (response, textStatus, errorThrown) {
                    handleError(response, textStatus, errorThrown);
                }
            });
        };  

处理请求的 Spring mvc Controller 部分:

@RequestMapping(value="myapp/{id}", method={RequestMethod.POST, RequestMethod.PUT})
@ResponseStatus(HttpStatus.CREATED)
public void setNote(@PathVariable("id") String user,  @RequestBody MyModel content) {

现在有效负载是:

POSTDATA={"message":"test message"}

一些提示:

  • 使用篡改数据或任何其他嗅探器检查请求的负载
  • 我发现您的方法参数中没有@RequestBody。也许你的 json 无法解析,因为你什么也没要求。尝试添加@RequestBody MyClass内容。 MyClass 应该有正确对应的 getter 和 setter 以及一个空的构造函数。

关于jquery - AJAX 请求格式错误?问题出在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9810564/

相关文章:

java - 为什么我必须在 spring data jpa 中将 @Modifying 与 @Transactional 一起使用?

java - 请求不会在没有 block 的情况下发送()

javascript - 每行仅突出显示一个单元格

javascript - 如何在 ASP.NET Core MVC 中将 js 字符串发布到 C#

java - Spring 单例 bean

ajax - 如何显示动态 Primefaces 组件的 ajaxstatus

javascript - 如何用状态码 500 响应 ajax jsonp 请求

javascript - 获取 anchor 标签的动态值

javascript - 无法在 Asp.net 文件上传更改事件调用时保留文本框值?

javascript - jquery slider 返回不一致的值