什么是AJAX请求中的内容types和数据types?

什么是POST请求中的内容types和数据types? 假设我有这个:

$.ajax({ type : "POST", url : /v1/user, datatype : "application/json", contentType: "text/plain", success : function() { }, error : function(error) { }, 

contentType是我们发送的? 那么我们在上面的例子中发送的是JSON,我们收到的是纯文本? 我真的不明白。

contentType是你发送的数据的types,所以application/json; charset=utf-8 application/json; charset=utf-8是一个常见的application/x-www-form-urlencoded; charset=UTF-8 application/x-www-form-urlencoded; charset=UTF-8 ,这是默认的。

dataType是你期待从服务器json的内容: jsonhtmltext等.jQuery将使用它来弄清楚如何填充成功函数的参数。

如果您发布的内容如下所示:

 {"name":"John Doe"} 

并期待回来:

 {"success":true} 

那么你应该有:

 var data = {"name":"John Doe"} $.ajax({ dataType : "json", contentType: "application/json; charset=utf-8", data : JSON.stringify(data), success : function(result) { alert(result.success); // result is an object which is created from the returned JSON }, }); 

如果您期待以下内容:

 <div>SUCCESS!!!</div> 

那么你应该这样做:

 var data = {"name":"John Doe"} $.ajax({ dataType : "html", contentType: "application/json; charset=utf-8", data : JSON.stringify(data), success : function(result) { jQuery("#someContainer").html(result); // result is the HTML text }, }); 

再一个 – 如果你想发布:

 name=John&age=34 

然后不要stringify数据,并做:

 var data = {"name":"John", "age": 34} $.ajax({ dataType : "html", contentType: "application/x-www-form-urlencoded; charset=UTF-8", // this is the default value, so it's optional data : data, success : function(result) { jQuery("#someContainer").html(result); // result is the HTML text }, }); 

从jQuery文档 – http://api.jquery.com/jQuery.ajax/

contentType将数据发送到服务器时,使用此内容types。

dataType您期望从服务器返回的数据的types。 如果没有指定,jQuery将尝试根据响应的MIMEtypes推断它

“文本”:一个纯文本string。

所以你想contentType是application/json和数据types为text

 $.ajax({ type : "POST", url : /v1/user, dataType : "text", contentType: "application/json", data : dataAttribute, success : function() { }, error : function(error) { } }); 

请参阅http://api.jquery.com/jQuery.ajax/ ,其中提到了数据types和contentType。

它们都用于请求到服务器,所以服务器知道接收/发送什么样的数据。