可能重复:
$.ajax - dataType
我使用的是jQuery 1.8.2,由于某些原因,'application/json'
不起作用,但'json'
作为dataType
与标准jquery
ajax
一起使用呼叫。这是一个小故障吗?与版本相关的区别?或两者之间是否存在既定差异?
$(document).ready(function() {
$.ajax({
type : "POST",
url : '<c:url value="/url.htm" >',
//dataType : "application/json", <-- does not work
dataType: 'json' // <-- works
success : function(data) {
// do something
},
error : function(data) {
// do something else
}
});
});
答案 0 :(得分:8)
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字段中设置的任何类型。
答案 1 :(得分:1)
“application / json”是json的正确mime类型。但是,jquery dataType
字段需要以下字符串之一:
"xml"
"html"
"script"
"json"
"jsonp"
答案 2 :(得分:1)
根据json文档,正确的dataType是“json”。
http://api.jquery.com/jQuery.ajax/
以下是支持的选项: