contentType与dataType

article/2025/11/6 19:12:58

$.ajax contentType 和 dataType , contentType 主要设置你发送给服务器的格式,dataType设置你收到服务器数据的格式。

在http 请求中,get 和 post 是最常用的。在 jquery 的 ajax 中, contentType都是默认的值:application/x-www-form-urlencoded,这种格式的特点就是,name/value 成为一组,每组之间用 & 联接,而 name与value 则是使用 = 连接。如: wwwh.baidu.com/q?key=fdsa&lang=zh 这是get , 而 post 请求则是使用请求体,参数不在 url 中,在请求体中的参数表现形式也是: key=fdsa&lang=zh的形式。

键值对这样组织在一般的情况下是没有什么问题的,这里说的一般是,不带嵌套类型JSON,也就是 简单的JSON,形如这样:

{a: 1,b: 2,c: 3
}

但是在一些复杂的情况下就有问题了。 例如在 ajax 中你要传一个复杂的 json 对像,也就说是对象嵌数组,数组中包括对象,兄果你这样传:

{data: {a: [{x: 2}]}
}

这个复杂对象, application/x-www-form-urlencoded 这种形式是没有办法将复杂的 JSON 组织成键值对形式(当然也有方案这点可以参考 ) ,你传进去可以发送请求,但是服务端收到数据为空, 因为 ajax 没有办法知道怎样处理这个数据。

这怎么可以呢?

聪明的程序员发现 http 还可以自定义数据类型,于是就定义一种叫 application/json 的类型。这种类型是 text , 我们 ajax 的复杂JSON数据,用 JSON.stringify序列化后,然后发送,在服务器端接到然后用 JSON.parse 进行还原就行了,这样就能处理复杂的对象了。

$.ajax({dataType: 'json',contentType: 'application/json',data: JSON.stringify({a: [{b:1, a:1}]})
})

这样你就可以发送复杂JSON的对象了。

------------------------------------------分割线--------------------------------------------------

在使用ajax上传文件时:

var formData = new FormData();
formData.append('headPic', $("#upfile")[0].files[0]);$.ajax({url: '/web/headPic',type: 'post',dataType: 'json',cache: false,data:formData,processData: false,contentType: false,}).done(function(data) {    //上传成功if(data.status == true){console.log("success"); }else{console.log(data.errMsg);}}).fail(function() {console.log("GG,failed");}).always(function() {console.log("complete");});

在其中先封装了一个 formData 对象,然后使用 post 方法将文件传给服务器。

起初,http 协议中没有上传文件方面的功能,直到 rfc1867 为 http 协议添加了这个功能。当然在 rfc1867 中限定 form 的 method 必须为 POST , enctype = “multipart/form-data” 以及.

当我们使用表单上传文件时,他的Request headers:
图片描述

发现在 multipart/form-data 后面有boundary以及一串字符,这是分界符,后面的一堆字符串是随机生成的,目的是防止上传文件中出现分界符导致服务器无法正确识别文件起始位置。说到这肯定就要说说这分界符有啥作用呢?

因为对于上传文件,我们没有在使用原有的 http 协议,所以 multipart/form-data 请求是基于 http 原有的请求方式 post 而来的.那么来说说这个全新的请求方式与 post 的区别

请求头的不同,对于上传文件的请求,contentType = multipart/form-data是必须的,而 post 则不是,毕竟 post 又不是只上传文件~。

请求体不同。这里的不同也就是指前者在发送的每个字段内容之间必须要使用分界符来隔开,比如文件的内容和文本的内容就需要分隔开,不然服务器就没有办法正常的解析文件,而后者 post 当然就没有分界符直接以 name = "value"的形似发送。

说到这,我们发现在 JQuery ajax() 方法中我们使contentType = false,这不是冲突了吗?这当然没有,因为当我们查看这时的 Request headers,会发现还是有分界符。这就是因为当我们在 form 标签中设置了enctype = “multipart/form-data”,这样请求中的 contentType 就会默认为 multipart/form-data 。而我们在 ajax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符,而使服务器不能正常解析文件。


http://chatgpt.dhexx.cn/article/j2g53PFn.shtml

相关文章

Types of Data

企业中的数据都如何分类? 粗略的分类 如果粗略点的分类话,可以分为两类数据:主数据和事务型数据。 主数据(Master Data) “Master Data is your business critical data that is stored in disparate systems spread across your Enterprise.…

Python DataType(数据类型)

简述 变量:指代任意一个数,或其他数据类型 变量名:大小写英文、数字和下划线(_)的组合,且不能用数字开头 Python主要的数据类型有如下:(允许自定义数据类型) 整数&…

条件随机场适用于无监督学习吗?

条件随机场适用于无监督学习吗? 在网上搜到的资料比较少。 HMM模型可以用EM算法来进行无监督学习。

深入理解机器学习——概率图模型(Probabilistic Graphical Model):条件随机场(Conditional Random Field,CRF)

分类目录:《深入理解机器学习》总目录 条件随机场(Conditional Random Field,CRF)是一种判别式无向图模型,在《概率图模型(Probabilistic Graphical Model):隐马尔可夫模型&#xff…

概率图模型之条件随机场

条件随机场(CRF)是一种判别式无向图模型。生成式模型是直接对联合分布进行建模,而判别式模型是对条件分布进行建模。前面提到的隐马尔可夫模型和马尔可夫随机场都是生成式模型,而条件随机场则是判别式模型。条件随机场试图对多个变…

马尔可夫随机场与条件随机场

文章目录 马尔可夫随机场1. 引言2. 团与极大团3. MRF联合概率4. MRF的条件独立性(有向分离)条件随机场 马尔可夫随机场 1. 引言 马尔可夫随机场(Markov Random Field,简称MRF),是马尔可夫网的一种,生成式模型,是一种著名的无向图…

通俗易懂条件随机场CRF

条件随机场CRF 条件随机场(Conditional Random Fields, 以下简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型,在自然语言处理中得到了广泛应用。本系列主要关注于CRF的特殊形式:线性链(Linear chain) CRF。本文关注与CRF的模型基础。…

条件随机场(2)——概率计算

1.CRF简化表示 先回顾一下线性链CRF参数化形式 和都可以表示为随机变量的函数,因此,可以将和统一成 其中,是转移特征的个数,是状态特征的个数。特征函数所代表的特征集合一共有K个值,。 用来表示特征的权重&am…

条件随机场详细推导

条件随机场 条件随机场简介1.条件随机场简介 条件随机场举例2.条件随机场举例 条件随机场三个基本问题及推导3.条件随机场三个基本问题及推导 参考文献 条件随机场简介 1.条件随机场简介 马尔可夫随机场:设有联合概率分布P(Y),由无向图G(V,E)表示&…

经典算法: 条件随机场(conditional random field, CRF)

1. 引言 条件随机场,conditional random field,CRF,是给定一组输入随机变量的条件下,输出随机变量的条件概率分布模型。 条件随机场和隐马尔可夫模型的联系: 可以看到,条件随机场是一种无向图。 2. 概…

条件随机场原理介绍

1. 引言 条件随机场(Conditional random field,CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场。条件随机场常用于序列标注问题,比如命名实体识别…

条件随机场(CRF)概述

转自:原文链接 条件随机场是一种判别模型,用于预测序列。他们使用来自先前标签的上下文信息,从而增加了模型做出良好预测所需的信息量。在这篇文章中,我将讨论一些将介绍 CRF 的主题。我会过去: 什么是判别分类器&am…

条件随机场CRF的理解

1.个人理解和总结 对比HMM的状态转移概率矩阵和发射概率矩阵CRF有自己的定义在边上的特征函数(相当于转移概率)和定义在节点上的特征函数(相当月发射概率)序列标注HMM可以根据转移概率矩阵和发射概率矩阵计算出隐状态序列概率&am…

条件随机场的简单理解

目录 什么是条件随机场 条件随机场长怎么样 如何构建特征函数 前向—后向算法 条件随机场的概率计算问题 条件随机场的预测问题 什么是条件随机场 条件随机场的定义 条件随机场总的来说就是只要满足“条件随机场”这个条件,就可以根据定义的模型去求解我们需…

nlp基础—9.条件随机场模型(CRF算法)

文章目录 引言一、概率无向图模型1. 概率无向图模型的定义2. 概率无向图模型的因子分解 二、条件随机场的定义与形式1. 条件随机场的定义2. 条件随机场的参数化形式3. 条件随机场的简化形式4.条件随机场的矩阵形式 三、条件随机场的三个基本问题1.概率计算问题2. 学习问题3. 预…

条件随机场模型

条件随机场模型(Conditional Random Fields, CRF) 条件随机场是给定一组输入随机变量条件下,另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场。线性链条件随机场,是输入序列对输出…

CRF 条件随机场

目录 1. 基本概念 1.1 各种随机场 1.2 CRF模型的训练原理 1.3 条件随机场的参数化形式 1.4条件随机场对应的简化概率表达 2. 例子 定义CRF中的特征函数 从特征函数到概率 CRF与逻辑回归的比较 CRF与HMM的比较 HMM和CRF区别 3. Tensorflow实现 tf.contrib.c…

NLP之条件随机场

条件随机场(conditional random fields, CRFs)由J. Lafferty等人(2001)提出,近几年来在自然语言处理和图像处理等领域中得到了广泛的应用。 CRF是用来标注和划分序列结构数据的概率化结构模型。言下之意,就…

条件随机场CRF

1 条件随机场CRF:从条件随机场到线性链条件随机场 条件随机场(Conditional Random Fields, 以下简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型,在自然语言处理中得到了广泛应用。 1.1 什么样的问题需要CRF模型 这里举一个简单的…

条件随机场的肤浅理解

条件随机场(Conditional Random Field,CRF)是自然语言处理的基础模型,是一个无向图概率模型。经过长期的发展目前已经广泛应用于词性标注、图像分类等众多场景。 一、基本概念 随机场 : 给定一组随机变量: X { X 1 , X 2 , X …