【问题标题】:Differences between contentType and dataType in jQuery ajax functionjQuery ajax 函数中 contentType 和 dataType 的区别
【发布时间】:2012-12-28 16:20:26
【问题描述】:

我有以下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 请求,并且我发送的数据是以下字符串:

“枷锁”

我很难理解 contentTypedataType

之间的区别

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

还有数据类型?说啥?我在 HTTP 请求中发送的数据类型?

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

【问题讨论】:

  • jQuery 使用和 REST API 使用的 content-type 和 data-type 用途是否不同?

标签: javascript ajax jquery


【解决方案1】:

来自documentation

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

类型:字符串

向服务器发送数据时,使用此内容类型。默认为“application/x-www-form-urlencoded; charset=UTF-8”,在大多数情况下都可以。如果您将内容类型显式传递给 $.ajax(),那么它将始终被发送到服务器(即使没有发送数据)。如果没有指定字符集,数据将使用服务器的默认字符集传输到服务器;您必须在服务器端对此进行适当解码。

和:

dataType(默认:Intelligent Guess(xml、json、script 或 html))

类型:字符串

您期望从服务器返回的数据类型。如果没有指定,jQuery 将尝试根据响应的 MIME 类型推断它(XML MIME 类型将产生 XML,在 1.4 中 JSON 将产生 JavaScript 对象,在 1.4 中脚本将执行脚本,其他任何内容都将是以字符串形式返回)。

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

【讨论】:

  • contentType 也会影响标题,dataType 不会
【解决方案2】:

英文:

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

【讨论】:

  • 漂亮的可视化。谢谢。
猜你喜欢
  • 2013-07-23
  • 2013-09-17
  • 2013-06-30
  • 2020-08-28
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
相关资源
最近更新 更多