jQuery ajax 函数中 contentType 和 dataType 的区别

2022-08-30 04:25:58

我有以下Jquery回调函数,我对它有一点疑问(我不太了解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请求,并且我发送的数据是以下字符串:

“棒苹果”

我有一些困难来理解内容类型数据类型之间的区别是什么

我认为 contentType 指定了在 HTTP 响应中可接受的数据类型,对吗?

数据类型呢?怎么说?我在 HTTP 请求中发送的数据类型?

在这种情况下是“文本”,因为我正在发送一个文本字符串,该字符串表示XML代码?


答案 1

文档中

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

类型:字符串

将数据发送到服务器时,请使用此内容类型。默认值为“application/x-www-form-urlencoded;charset=UTF-8“,这在大多数情况下都很好。如果将内容类型显式传递到 $.ajax(),则它将始终发送到服务器(即使未发送任何数据)。如果未指定字符集,则将使用服务器的默认字符集将数据传输到服务器;您必须在服务器端对此进行适当的解码。

和:

数据类型(默认:智能猜测(xml、json、script 或 html))

类型:字符串

您希望从服务器返回的数据类型。如果未指定任何内容,jQuery 将尝试根据响应的 MIME 类型进行推断(XML MIME 类型将生成 XML,在 1.4 中 JSON 将生成 JavaScript 对象,在 1.4 中脚本将执行脚本,其他任何内容都将作为字符串返回)。

它们本质上与你想象的相反。


答案 2

enter image description here

英语:

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