- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图理解 Ajax 请求中的 Accept 和 dataType 之间的区别。文档说明:
接受(默认值:取决于数据类型)类型:普通对象请求 header 中发送的内容类型,告诉服务器它将接受哪种类型的响应。
数据类型(默认值:智能猜测(xml、json、脚本或 html))类型:字符串您期望从服务器返回的数据类型。
基本上,是一样的吗?,它有相同的目的。
最佳答案
希望这是一个准确的答案:
accepts
选项可让您更改请求中的 Accept
header
当您更改此选项时,请求中的 Accept
header 将设置为指定的 header 。请注意,它不是一个字符串,而是一个映射已接受响应的 MIME 类型的对象。就像 { text: "text/plain", html: "text/html"}
一样。服务器可以使用 Accept
header 以请求预期的格式提供响应,或者在无法以请求预期的格式之一提供响应时失败。
真正重要的是,至少在 jQuery 1.11.3(我测试过的版本)中,此选项似乎不起作用,相反,我设法使用 headers
选项更改 header : 标题:{接受:“text/json”}
。
dataType
选项可让您预处理响应
如果您定义dataType
,则请求的响应将由 jQuery 进行预处理,然后再提供给成功处理程序。例如:
If
json
is specified, the response is parsed usingjQuery.parseJSON
before being passed, as an object, to the success handler.If
script
is specified,$.ajax()
will execute the JavaScript that is received from the server before passing it on to the success handler as a string.
更多示例 here ,在“数据类型”部分。
如果未设置dataType
,则响应的Content-Type
将确定应对响应进行哪些预处理。请注意,更改 dataType
也会更改 Accept
header 。通常不需要自己更改 Accept
header 。
示例
request.php
<?php
if(strpos($_SERVER["HTTP_ACCEPT"],"text/javascript") === false)
exit("I only provide text/javascript responses");
echo "alert('This is my response!')";
index.html
<button id="send">Send</button>
<div id="response"></div>
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$(function(){
$("#send").click(function(){
$.ajax({
method: "GET",
url: "request.php",
dataType: "script" // Change this to "text" and you will see the difference
}).done(function(data) {
$("#response").text(data);
});
});
});
</script>
当dataType
设置为“script”
时,Accept
header 将包含“text/javascript”
因此 request.php
上的测试将会通过。它将返回 "alert('This is my response!')"
并且因为 dataType
设置为 "script"
jQuery 将尝试将其作为 javascript 执行,然后将其作为纯文本传递给成功处理程序。
如果将dataType
更改为“text”
,则Accept
header 将不包含“text/javascript”
因此 request.php
上的测试将会失败。它将返回“我只提供文本/javascript响应”
并且因为dataType
设置为“text”
jQuery会将其作为纯文本传递到成功处理程序。
关于jquery - dataType 与接受 - Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33060712/
这个问题已经有答案了: EmailAddress or DataType.Email attribute (3 个回答) 已关闭 3 年前。 我使用了像[EmailAddress]这样的数据属性和[D
我收到此错误: "CS0104: 'DataType' is an ambiguous reference between 'System.ComponentModel.DataAnnotations
1)我目前正在尝试理解以下代码,但我无法理解 void(*func)(void) 的含义,我可以理解我正在尝试保存名为“function”的函数的地址来自 list0513,在 void 指针函数处,
我们可以以某种方式应用这种格式吗? [Display(Name = "Date of Birthday")] [DataType(DataType.Date)] public DateTime DOB
我已按照 ORMLite 文档的规定将我的类型声明为 SERIALIZABLE,但我仍然得到: ORMLite can't store unknown class interface java.io.
嗨。 这就是我想要做的: str2 = "91"; str1 = "19"; var testQuery = from c1 in str1
我在 MVC 5 中使用 ASP.NET 身份。对于密码验证,我在 AccountViewModels.cs 中有以下代码: [Required] [DataType(DataType.Passwor
我试图了解使用之间的主要区别是什么[DataType(DataType.EmailAddress)] & [EmailAddress] . 在模型类中:- public class MYViewMod
使用 DataType Attribute 有什么区别?并传入值 DataType.Phone和 Phone Attribute它继承自 DataType 并自动设置 DataType.Phone?
我的 ViewModel 中有以下字段: [DataType(DataType.Date)] [Display(Name = "Preferred date)")] publi
如果没记错的话,是[DataType(DataType.Currency)]的DataAnnotation的对应部分在 Fluent api 中是 modelBuilder.Entity.Proper
给定一个 pandas.DataFrame带有包含混合数据类型的列,例如 df = pd.DataFrame({'mixed': [pd.Timestamp('2020-10-04'), 999, '
我在电子邮件字段上使用此代码: [Required] [DataType(DataType.EmailAddress)] [Display(Name = "Email addr
我是 NodeJs 开发的新手 我正在使用带有 mysql 和 Sequelize 的 NodeJs 来创建具有这些属性的 Batch 模型。 const Batch = sequelize.defi
我想动态生成我的数据框架构我有以下内容 错误: assert isinstance(dataType, DataType), "dataType should be DataType" Asse
我是 Golang 的新手。抱歉,我仍然对以下两者之间的区别感到困惑: type 和 type = 这是一个例子: package main import "fmt" func main()
当电子邮件地址以数字开头时,DataType DataAnnotation 中 DataType.Email 的内部验证似乎失败了。当具有 1234Something@gmail.com 样式电子邮件
有需求从CSV文件中提取数据,然后将其转换为XML,最终加载到目标中。 CSV文件中的数据为 Number,Email,Email Communication,Member Type,VIN 8532
我正在使用 [DataType(DataType.Date)]关于我们模型中的属性。 如何让 Razor 添加 css 类 datepicker到所有属于 DataType.Date 的文本框特性?
我的表 CalTime 有一个时间数据类型的列 Timespent。它以 HH:MM:SS 格式存储值。请建议如何求和该列的值。 Timespent _______ 00:07:
我是一名优秀的程序员,十分优秀!