Ajax PUT请求失败

时间:2018-03-14 08:35:03

标签: javascript ajax html5 form-data

我正在制作ajax PUT请求并包含请求的所有必填字段。我仍然得到400错误。

这是我的表格数据

var settings = {
            "async": true,
            "crossDomain": true,
            "url": url,
            "type": "PUT",
            processData: false,
            contentType: false,
            "credentials": 'include',
            "headers": {
                Authorization: "Token " + token
            },
            "data": data,
            success:( response, textStatus, jQxhr )=> {
                console.log("info updated")

            }
        }
        $.ajax(settings).done((response) => {
            console.log("info updated success")
        });

这就是我提出请求的方式

server {
  listen 80;
  server_name mycomputer.mydomain.com;
  location /myapp {
    proxy_pass 127.0.0.1:8085;
  }
  location /myapp2 {
    proxy_pass 127.0.0.1:8086;
  }
  .....
}

这是我得到的错误

enter image description here enter image description here

如果我离开“演员”字段,我的后端完全可以。请不要认为这是一个可能的答案。我试过也包括“演员”,但仍然有同样的错误。

我做错了什么?我是以错误的方式制作形式数据吗?

更新

我发送的JSON是(这是从我打印formdata的控制台)

enter image description here

2 个答案:

答案 0 :(得分:1)

看起来数据未在服务器端正确传递或未正确转换,因此验证失败。在请求标头中,我注意到它正在发送multipart/form-data

请更新consumes的{​​{1}}以允许RequestMapping,即multipart/form-data

答案 1 :(得分:0)

尝试将数据作为JSON发送:

var settings = {
            "async": true,
            "crossDomain": true,
            "url": url,
            "type": "PUT",
            processData: false,
            "credentials": 'include',
            "headers": {
                Authorization: "Token " + token
            },
            "data": data,
            "contentType":"application/json; charset=utf-8",
            success:( response, textStatus, jQxhr )=> {
                console.log("info updated")

            }
        }
        $.ajax(settings).done((response) => {
            console.log("info updated success")
        });