dataType’application / json’与’json’

可能重复:
$ .ajax – dataType

我使用的是jQuery 1.8.2,由于某种原因'application/json'不起作用,但'json'作为dataType用于标准的jquery ajax调用。 这是一个小故障吗? 与版本有关的区别? 或两者之间是否存在既定差异?

 $(document).ready(function() { $.ajax({ type : "POST", url : '', //dataType : "application/json", <-- does not work dataType: 'json' // <-- works success : function(data) { // do something }, error : function(data) { // do something else } }); }); 

dataType接受json,这意味着请求需要json响应。

contentType接受application/json ,这意味着请求正在发送json数据

您可以在请求中发送和期望json,例如

 $.ajax({ type : "POST", url : url, contentType : "application/json", dataType: 'json', data: JSON.stringify({some: 'data'}), success : function(data) { // do something }, error : function(data) { // do something else } }); 

在这里你发送json并期待xml

 $.ajax({ type : "POST", url : url, contentType : "application/json", dataType: 'xml', data: JSON.stringify({xmlfile: 'file.xml'}), success : function(data) { // do something }, error : function(data) { // do something else } }); 

在这里你发送x-www-form-urlencoded (jQuery自动为你设置),并期待json回来

 $.ajax({ type : "POST", url : url, dataType: 'json', data: {id: '1'}, success : function(data) { // do something }, error : function(data) { // do something else } }); 

contentType设置ContentType HTTP请求标头,告诉服务器该请求的主体是给定类型的。
dataType设置Accept标头,告诉服务器这是我们想要的响应类型,例如

 Accept:application/json, text/javascript, */*; q=0.01 

但无论服务器发送什么类型的响应,jQuery仍将尝试将其解析为您在dataType字段中设置的任何类型。

“application / json”是json的正确mime类型。 但是,jquery dataType字段需要以下字符串之一:

 "xml" "html" "script" "json" "jsonp" 

根据json文档,正确的dataType是“json”。

http://api.jquery.com/jQuery.ajax/

以下是支持的选项:

  • XML
  • HTML
  • 脚本
  • JSON
  • JSONP
  • 文本