gpt4 book ai didi

jquery - dataType 与接受 - Ajax 请求

转载 作者:行者123 更新时间:2023-12-03 22:04:46 24 4
gpt4 key购买 nike

我试图理解 Ajax 请求中的 Accept 和 dataType 之间的区别。文档说明:

Documentation

接受(默认值:取决于数据类型)类型:普通对象请求 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 using jQuery.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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com