Ajax 简明教程
Fetch API - Send Data Objects
在 Fetch API 中,我们可以将数据对象从 Web 浏览器发送到 Web 服务器。数据对象是一个包含键值对或属性值对的数据对象。或者我们可以说数据对象是我们使用 Fetch API 创建 HTTP 请求时添加到请求正文中的数据。
Fetch API 支持各种数据格式;你可以根据设置的内容类型标头或服务器的要求对其进行选择。一些常用的数据格式为 −
JSON
JSON 被称为 JavaScript 对象表示法。它是 Web 浏览器和服务器之间交换数据的最常用数据格式。在 JSON 格式中,数据以键值对的形式存储,并为嵌套对象或数组提供完全支持。要以 JSON 格式发送数据,我们需要使用 “JSON.stringfy()” 函数将 JavaScript 对象转换成 JSON 字符串。
以下是数据 JSON 格式 −
const newData = {
empName: "Pooja",
empID: 2344,
departmentName: "HR"
};
其中,“empName”、“empID”和“department”是键,“Pooja”、“2344”和“HR”是它们的值。
以下标头用于 JSON 格式 −
headers:{"Content-type": "application/json; charset=UTF-8"}
它告诉服务器收到的数据为 JSON 格式。
Example
在以下程序中,我们创建了一个脚本,以 JSON 格式发送数据。因此,为此,我们创建了一个具有键值对的数据对象。现在我们使用 fetch() 函数向服务器发送请求。在此获取函数中,我们包含请求方法 “POST”,将标头设置为 “application/json”,该标头告诉服务器发送的数据为 JSON,并将数据对象包括在请求正文中,方法是使用 “JSON.stringify()” 函数转换为 JSON 字符串。向服务器发送请求后,现在我们使用 then() 函数来处理响应。如果遇到错误,则该错误将由 catch() 函数处理。
<!DOCTYPE html>
<html>
<body>
<script>
// Data object
const newData = {
id: 45,
title: "Tom like finger chips",
age: 34
};
fetch("https://jsonplaceholder.typicode.com/todos", {
// Adding POST request to send data
method: "POST",
// Adding header
headers:{"Content-type": "application/json; charset=UTF-8"},
// Adding body which we want to send
// Here we convert data object into JSON string
body: JSON.stringify(newData)
})
// Converting received information into JSON
.then(response =>{
if (response.ok){
return response.json()
}
})
.then(myData => {
// Display result
console.log("Data Sent Successfully");
// Display output
document.getElementById("sendData").innerHTML = JSON.stringify(myData);
}).catch(err=>{
console.log("Found error:", err)
});
</script>
<h2>Sent Data</h2>
<div>
<!-- Displaying data-->
<p id = "sendData"></p>
</div>
</body>
</html>
FormData
FormData 是内置的 JavaScript 对象。它用于以 HTML 表单格式发送数据。在 FormData 中,我们可以以键值对的形式存储数据,其中键表示表单的字段,值表示该字段的值。它可以处理二进制数据、文件和其他表单类型。要创建新的表单对象,我们需要使用 FormData() 构造函数以及一个新关键字。
Syntax
newform.append("name", "Mohina");
其中,“name”是表单的键或字段,而“Mohina”是字段的值。使用 Fetch API 中的 FormData 对象时,我们不需要设置头部,因为 Fetch API 将自动为 FormData 对象设置头部。
Example
在以下程序中,我们创建一个脚本来发送 FormData 中的数据。为此,我们使用 FormData() 构造函数创建一个 FormData 对象,然后使用 append() 函数在 FormData 对象中添加键值对。现在,我们使用 fetch() 函数向服务器发送请求。在此 fetch 函数中,我们包括请求方法“POST”,并将 FormData 对象包含在 body 参数中。在向服务器发送请求后,我们现在使用 then() 函数来处理响应。如果遇到错误,则该错误将由 catch() 函数处理。
<!DOCTYPE html>
<html>
<body>
<script>
// FormData object
const newform = new FormData();
// Adding key-value pairs in FormData object
newform.append("id", 4532);
newform.append("title", "Today is raining");
fetch("https://jsonplaceholder.typicode.com/todos", {
// Adding POST request to send data
method: "POST",
// Adding body which we want to send
// Here we add FormData object
body: newform
})
// Converting received information into JSON
.then(response =>{
if (response.ok){
return response.json()
}
})
.then(myData => {
// Display result
console.log("Data Sent Successfully");
// Display output in HTML page
document.getElementById("sendData").innerHTML = JSON.stringify(myData);
}).catch(err=>{
console.log("Found error:", err)
});
</script>
<h2>Sent Data</h2>
<div>
<!-- Displaying data-->
<p id = "sendData"></p>
</div>
</body>
</html>
Plain Text
在 Fetch API 中,我们还可以以简单的纯文本发送数据。如果我们要发送原始文本或非标准数据格式,那么我们将使用纯文本发送数据。要发送纯文本,我们需要简单地在请求的正文中以字符串形式添加文本。
以下是纯文本对象:
const newData = "My car is running very fast"
纯文本使用以下头部:
headers:{"Content-type": "text/plain"}
它向服务器指示接收到的数据为纯文本。
Example
在以下程序中,我们创建一个脚本,以纯文本发送数据。为此,我们创建一个数据对象,并在纯文本中为其分配字符串值。现在,我们使用 fetch() 函数向服务器发送请求。在此 fetch 函数中,我们包括请求方法“POST”,将头部设置为“text/plain”(这告诉服务器发送的数据为纯文本),并将数据对象包含在请求的正文中。在向服务器发送请求后,我们现在使用 then() 函数来处理响应。如果遇到错误,则该错误将由 catch() 函数处理。
<!DOCTYPE html>
<html>
<body>
<script>
// FormData object
const newform = new FormData();
// Adding key-value pairs in FormData object
newform.append("id", 4532);
newform.append("title", "Today is raining");
fetch("https://jsonplaceholder.typicode.com/todos", {
// Adding POST request to send data
method: "POST",
// Adding body which we want to send
// Here we add the FormData object
body: newform
})
// Converting received information into JSON
.then(response =>{
if (response.ok){
return response.json()
}
})
.then(myData => {
// Display result
console.log("Data Sent Successfully");
// Display output in HTML page
document.getElementById("sendData").innerHTML = JSON.stringify(myData);
}).catch(err=>{
console.log("Found error:", err)
});
</script>
<h2>Sent Data</h2>
<div>
<!-- Displaying data-->
<p id = "sendData"></p>
</div>
</body>
</html>
URL-encoded Data
URL 编码的数据是用于在 URL 参数或 POST 请求正文中发送表单的最常使用的数据格式。它将数据表示为键值对的形式,其中使用百分号编码对值进行编码。我们可以借助 URLSearchParams 类创建 URL 编码数据对象。
Syntax
newform.append("name", "Mohina");
其中,“name”是表单的键或字段,而“Mohina”是字段的值。
URL 编码的数据使用以下头部:
headers:{"Content-type": "text/plain"}
它向服务器指示接收到的数据为 URL 编码数据。
Example
在以下程序中,我们创建一个脚本,以纯 URL 编码发送数据。为此,我们使用 URLSearchParams() 创建一个数据对象,并使用 append() 函数分配键值对。现在,我们使用 fetch() 函数向服务器发送请求。在此 fetch 函数中,我们包括请求方法“POST”,将头部设置为“application/x-www-form-urlencoded”(这告诉服务器发送的数据为 URL 编码格式),并将数据对象包含在请求的正文中。在向服务器发送请求后,我们现在使用 then() 函数来处理响应。如果遇到错误,则该错误将由 catch() 函数处理。
<!DOCTYPE html>
<html>
<body>
<script>
// FormData object
const newform = new FormData();
// Adding key-value pairs in FormData object
newform.append("id", 4532);
newform.append("title", "Today is raining");
fetch("https://jsonplaceholder.typicode.com/todos", {
// Adding POST request to send data
method: "POST",
// Adding body which we want to send
// Here we add FormData object
body: newform
})
// Converting received information into JSON
.then(response =>{
if (response.ok){
return response.json()
}
})
.then(myData => {
// Display result
console.log("Data Sent Successfully");
// Display output in HTML page
document.getElementById("sendData").innerHTML = JSON.stringify(myData);
}).catch(err=>{
console.log("Found error:", err)
});
</script>
<h2>Sent Data</h2>
<div>
<!-- Displaying data-->
<p id = "sendData"></p>
</div>
</body>
</html>