jQuery ajax函数中contentType和dataType的区别

我有以下的jquerycallback函数,我有一个问题疑问(我不太清楚jquery):

$("form.readXmlForm").submit(function() { // Riferimento all'elemento form che ha scatenato il submit var form = $(this); // Variabile che contiene il riferimento al bottone clickato var button = form.children(":first"); $.ajax({ // Viene eseguita la chiamata AJAX type: "POST", // Tipo di richiesta: POST // URL verso quale viene inviata la richiesta url: form.attr("action"), // Dati XML inviati: data: "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><javaBean><foo>bar</foo><fruit>apple</fruit></javaBean>", // Tipo di media type accettabile dalla response: contentType: "application/xml", dataType: "text", success: function(text) { MvcUtil.showSuccessResponse(text, button); }, error: function(xhr) { MvcUtil.showErrorResponse(xhr.responseText, button); } }); 

正如你可以看到这个函数只是执行一个AJAX请求到后端设置这个请求的参数。

我已经设置,我正在发送一个URL的请求,该请求是一个POST请求,并且我发送的数据是以下string:

“barapple”

理解contentTypedataType之间的区别有一些困难

我认为contentType指定在HTTP响应中可接受的数据types,是不是?

和dataType? 说啥? 我在HTTP请求中发送的数据的types?

在这种情况下,是“文本”,因为我发送一个文本string,反映XML代码?

从文档 :

contentType(默认:'application / x-www-form-urlencoded; charset = UTF-8')

types:string

将数据发送到服务器时,请使用此内容types。 默认是“application / x-www-form-urlencoded; charset = UTF-8”,这在大多数情况下都是很好的。 如果明确地将内容types传递给$ .ajax(),那么它将始终被发送到服务器(即使没有数据发送)。 如果未指定字符集,则会使用服务器的默认字符集将数据传输到服务器; 您必须在服务器端正确解码。

和:

dataType(默认:智能猜测(XML,JSON,脚本或HTML))

types:string

您期望从服务器返回的数据types。 如果没有指定,jQuery将尝试根据响应的MIMEtypes推断它(一个XML MIMEtypes将产生XML,在1.4 JSON将产生一个JavaScript对象,在1.4脚本将执行该脚本,其他任何将作为string返回)。

他们基本上和你所想象的相反。

在这里输入图像描述

用英语:

  • ContentType :将数据发送到服务器时,使用此内容types。 默认是application/x-www-form-urlencoded; charset=UTF-8 application/x-www-form-urlencoded; charset=UTF-8 ,这在大多数情况下都是很好的。
  • Accepts :在请求头中发送的内容types,告诉服务器它将接受什么样的响应作为回报。 取决于DataType
  • DataType :您希望从服务器返回的数据types。 如果没有指定,jQuery将尝试根据响应的MIMEtypes推断它。 可以是text, xml, html, script, json, jsonp