(一) dataType
可以有以下几种值:
"xml": 返回XML文档,可用jQuery进行处理。
"html": 返回纯HTML信息;包含的script标签会在插入DOM时执行。
"script": 返回纯文本JavaScript代码。不会自动缓存结果。除非设置了
"cache": true
。注意:在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
"json": 返回JSON数据。
"jsonp": JSONP(JSON with Padding)是跨域通信的一种协议,允许在网页上直接访问其他域的资源。
JSON数据被包含在函数调用中,作为该函数的一个参数被传递(通常是一个回调函数)。"text": 返回纯文本字符串。
例如,如果你预期服务器将返回一个JSON对象,你可以在$.ajax
调用中设置dataType: "json"
,
这样jQuery就会自动将服务器的响应解析为JavaScript对象或数组。
请注意,dataType
的默认值是Intelligent Guess (xml, json, script, or html)
,
这意味着如果不指定dataType
,jQuery将尝试根据响应的MIME类型来推断数据类型。
另外,请注意dataType
和contentType
之间的区别:dataType
指的是你期望从服务器接收什么类型的数据,
而contentType
指的是你发送给服务器的数据类型。
(二)contentType的可能取值
contentType
在 jQuery 的 $.ajax
方法中是一个用于设置请求头 Content-Type
的属性。
它指定了发送给服务器的数据的媒体类型。虽然 contentType
可以是任何有效的 MIME 类型,
但以下是一些在 web 开发中常用的 contentType
值:
(1)application/x-www-form-urlencoded
:这是默认的 contentType
。它用于发送标准的表单数据,
数据被编码为键值对(key-value pairs),并以 &
符号分隔。
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
(2)multipart/form-data
:用于文件上传。当你需要在一个表单中同时发送表单字段和文件时,
通常会使用这个 contentType
。
contentType: false, // 注意,当发送文件时,通常将 contentType 设置为 false,让 jQuery 自动处理 processData: false, // 设置为 false 阻止 jQuery 将 data 转换为查询字符串
注意:在文件上传的情况下,通常不需要手动设置 contentType
,因为 jQuery 会自动处理它。
(3)application/json
:用于发送 JSON 格式的数据。
当你想将 JavaScript 对象作为 JSON 字符串发送给服务器时,使用这个 contentType
。
contentType: 'application/json; charset=UTF-8', data: JSON.stringify(yourData), // 将 JavaScript 对象转换为 JSON 字符串
(4)text/plain
:用于发送纯文本数据。
contentType: 'text/plain; charset=UTF-8',
(5)text/xml
或 application/xml
:用于发送 XML 格式的数据。
contentType: 'text/xml; charset=UTF-8', // 或者 contentType: 'application/xml; charset=UTF-8',
(6)自定义 MIME 类型:你也可以定义你自己的 MIME 类型,但这通常只在特定的应用或API中需要。
请注意,contentType
的值应该根据服务器期望接收的数据类型来设置。如果服务器期望接收 JSON 格式的数据,
但客户端错误地发送了 application/x-www-form-urlencoded
格式的数据,
那么服务器可能无法正确解析数据。同样,如果服务器期望接收表单数据,但客户端发送了 JSON 数据,这也可能导致问题。
(三)错误消息“无法将多个参数绑定到请求的内容”
当你通过jQuery的$.ajax
发送POST请求,并且不提供contentType
时,
jQuery默认会将data
对象转换为application/x-www-form-urlencoded
格式,这意味着它会将对象属性作为表单字段和值来发送。
然而,如果你遇到“无法将多个参数绑定到请求的内容”这样的错误,这通常意味着服务器端期望的参数格式与发送的格式不匹配。
不过,错误消息“无法将多个参数绑定到请求的内容” 通常不是由jQuery或浏览器直接产生的,
而是由服务器端代码(如ASP.NET MVC的模型绑定器)产生的。这通常意味着服务器端期望的参数格式与发送的格式不匹配。
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

