Ajax请求Restful服务失败?

后台用json对象接收数据,使用jQuery默认$.ajax发送请求失败,发现媒体格式不支持:
clipboard.png
然后,在$.ajax中添加contentType:"application/json",发现还是报错:
clipboard.png

有什么办法?需要怎么做?

阅读 4.9k
1 个回答
$.ajax({
    //...
    dataType: "json"
});

这个问题看情况是你服务端的事,他响应的 Content-Type 是 text/html,如果内容确实为 JSON 格式,你可以为 ajax 添加选项 dataType 为 "json",来告知 ajax 不用理会响应的 Content-Type,尽管采用 json 解析。


如果你用 $.ajax 的 data 或 url 传递请求数据,你不必设置请求的 contentType,他会默认使用 application/x-www-form-urlencoded。设置不当可能导致服务端无法正常解析请求数据。


如果服务端 REST 服务确实不支持任何 POST/GET 数据,只认 JSON 数据,那你必须在 $.ajax 的 data 选择的值设为 JSON 格式字符串。


我仔细看了你的报错信息,第一个 415 不支持的媒体类型,那就是他不认你发过去的数据格式了;第二个是 400 错误请求,这通常发生在没法识别你的数据或要求的数据未提供。找找文档或问问你的后端同事他支持什么格式的数据,数据结构什么样子,试试 data: JSON.stringify(你的请求数据变量), dataType: "json", contentType: "application/json" , 如果报 JSON.stringify 未定义,试试下载并引入 json2 包。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进