AJAX 代表异步 JavaScript 和 XML。这是一种用于 Web 开发的技术,用于创建动态和交互式网页,而无需重新加载整个页面。使用 AJAX,您可以从服务器请求数据并异步更新网页的部分内容,这意味着用户可以在后台处理请求时继续与页面交互。
API(应用程序编程接口)是一组允许不同软件应用程序相互通信的规则和定义。在 Web 开发环境中,API 通常用于与 Web 服务器交互、检索数据和发送数据。 API 可以是公共的(任何人都可以使用)或私有的(仅限特定用户或应用程序)。
当您同时使用 AJAX 和 API 时,您可以使 Web 应用程序动态地获取、发送和更新数据。这种组合使您可以构建丰富、响应灵敏且交互式的 Web 应用程序,从而提供流畅的用户体验,而无需不断重新加载页面。
AJAX 不是单一技术,而是多种技术协同工作的组合:
为了演示 AJAX 的基础知识,让我们创建一个简单的 HTML 页面并使用 JavaScript 向服务器发送 AJAX 请求。
49099650ebdc5f3125501fa170048923 93f0f5c25f18dab9d176bd4f6de5d30e 1fc2df4564f5324148703df3b6ed50c1 4f2fb0231f24e8aef524fc9bf9b9874f b2386ffb911b14667cb8f0f91ea547a7AJAX Example6e916e0f7d1e588d4f442bf645aedb2f 9c3bca370b5104690d9ef395f2c5f8d1 6c04bd5ca3fcae76e30b72ad730ca86d 4a249f0d628e2318394fd9b75b4636b1AJAX Request Example473f0a7621bec819994bb5020d29372a f86b0e4b92265ac35a2a70e8fe37df94Load Data65281c5ac262bf6d81768915a4a77ac0 d41cbdeca95710cb1424c563591ee03616b28748ea4df4d9c2150843fecfba68 32d8a8489ccf6ad22016e69b0555932f2cacc6d41bbb37262a98f745aa00fbf0 36cc49f0c466276486e50c850b7e4956 73a6ac4ed44ffec12cee46588e518a5e
2.创建 JavaScript 文件 (app.js):
document.getElementById('loadData').addEventListener('click', function() { const xhr = new XMLHttpRequest(); xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts', true); xhr.onload = function() { if (xhr.status === 200) { document.getElementById('dataContainer').innerHTML = xhr.responseText; } else { console.error('Failed to load data'); } }; xhr.send(); });
3.测试AJAX请求:
An API (Application Programming Interface) is a set of rules and protocols that allows different software applications to communicate with each other. APIs define the methods and data formats that applications can use to interact with each other, making it easier to build software by providing reusable components and services.
APIs typically use JSON (JavaScript Object Notation) or XML (eXtensible Markup Language) to format data. JSON is more lightweight and easier to read, making it the preferred choice for most modern APIs.
{ "id": 1, "title": "Example Post", "body": "This is an example of a post.", "userId": 1 }
ec655f8ae13ea154ec5dc6589cbe502a 53384f78b45ee9f1e3082cf378b9c5b4142c6f2d00583d752e4637b73e8eb9308 b2386ffb911b14667cb8f0f91ea547a7Example Post6e916e0f7d1e588d4f442bf645aedb2f 6c04bd5ca3fcae76e30b72ad730ca86dThis is an example of a post.36cc49f0c466276486e50c850b7e4956 0264c0739a3aa848263f180570ab986917a264015ae2ed1b3a0f49f37420e0cd8 0cf29df1c39b9602336061a989a606e3
To make your first AJAX request, you need a basic HTML and JavaScript environment. Follow these steps:
8b05045a5be5764f313ed5b9168a17e6 49099650ebdc5f3125501fa170048923 93f0f5c25f18dab9d176bd4f6de5d30e 1fc2df4564f5324148703df3b6ed50c1 4f2fb0231f24e8aef524fc9bf9b9874f b2386ffb911b14667cb8f0f91ea547a7First AJAX Request6e916e0f7d1e588d4f442bf645aedb2f 9c3bca370b5104690d9ef395f2c5f8d1 6c04bd5ca3fcae76e30b72ad730ca86d 4a249f0d628e2318394fd9b75b4636b1Fetch Data with AJAX473f0a7621bec819994bb5020d29372a 59abb0b237ca04f77b84b0a984fa204fFetch Data65281c5ac262bf6d81768915a4a77ac0 c6d0fc20cfda62e61a924a57f5913b8f16b28748ea4df4d9c2150843fecfba68 166bab32b60e87199ea5f9ef274384382cacc6d41bbb37262a98f745aa00fbf0 36cc49f0c466276486e50c850b7e4956 73a6ac4ed44ffec12cee46588e518a5e
Create a JavaScript File (ajax.js):
document.getElementById('fetchDataBtn').addEventListener('click', function() { const xhr = new XMLHttpRequest(); xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts/1', true); xhr.onload = function() { if (xhr.status === 200) { const data = JSON.parse(xhr.responseText); document.getElementById('dataDisplay').innerHTML = ` c1a436a314ed609750bd7c7d319db4da${data.title}2e9b454fa8428549ca2e64dfac4625cd e388a4556c0f65e1904146cc1a846bee${data.body}94b3e26ee717c64999d7867364b1b4a3 `; } else { console.error('Error fetching data'); } }; xhr.onerror = function() { console.error('Request failed'); }; xhr.send(); });
3.Test the AJAX Request:
The XMLHttpRequest object is used to interact with servers. It allows you to make HTTP requests to retrieve or send data without reloading the page.
When the server responds to an AJAX request, the response is available in the xhr.responseText property. You can use JavaScript to process this data and update the webpage dynamically.
To debug AJAX requests, use browser developer tools:
The Fetch API is a modern alternative to XMLHttpRequest for making HTTP requests. It provides a more powerful and flexible feature set and returns Promises, making it easier to handle asynchronous operations.
fetch('https://jsonplaceholder.typicode.com/posts/1')<br><br> .then(response => response.json())<br><br> .then(data => {<br><br> document.getElementById('dataDisplay').innerHTML = <br> <h2>${data.title}</h2> <br> <p>${data.body}</p> <br> ;<br><br> })<br><br> .catch(error => console.error('Error fetching data:', error));<br>
fetch('https://jsonplaceholder.typicode.com/posts', {<br><br> method: 'POST',<br><br> headers: {<br><br> 'Content-Type': 'application/json'<br><br> },<br><br> body: JSON.stringify({<br><br> title: 'New Post',<br><br> body: 'This is a new post.',<br><br> userId: 1<br><br> })<br><br> })<br><br> .then(response => response.json())<br><br> .then(data => console.log('Post created:', data))<br><br> .catch(error => console.error('Error creating post:', error));<br>
The Fetch API provides a json() method to parse the response body as JSON. This method returns a Promise that resolves with the parsed JSON data.
Use .catch() to handle errors in Fetch requests. This method catches any errors that occur during the fetch operation or while processing the response.
REST (Representational State Transfer) is an architectural style for designing networked applications. RESTful APIs follow specific conventions for managing resources over the web.
fetch('https://jsonplaceholder.typicode.com/posts')<br><br> .then(response => response.json())<br><br> .then(posts => {<br><br> posts.forEach(post => {<br><br> console.log(post.title);<br><br> });<br><br> })<br><br> .catch(error => console.error('Error fetching posts:', error));<br>
CRUD stands for Create, Read, Update, Delete — four fundamental operations for managing data.
CRUD Operations with AJAX
CRUD stands for Create, Read, Update, Delete—four fundamental operations for managing data.
Create: Use POST to add new data.
Read: Use GET to retrieve data.
Update: Use PUT or PATCH to modify existing data.
Delete: Use DELETE to remove data.
Example of CRUD Operations with Fetch:
CORS (Cross-Origin Resource Sharing) is a security feature that restricts web pages from making requests to a different domain than the one that served the web page. To work with APIs across different domains, the server must enable CORS.
Promises simplify the management of asynchronous operations in JavaScript. They provide a more readable way to handle AJAX requests compared to callbacks.
fetch('/api/posts')<br><br> .then(response => response.json())<br><br> .then(data => console.log(data))<br><br> .catch(error => console.error('Error:', error));<br>
Async/Await is syntactic sugar built on top of Promises, making asynchronous code easier to read and write.
async function fetchPosts() {<br><br> try {<br><br> const response = await fetch('/api/posts');<br><br> const data = await response.json();<br><br> console.log(data);<br><br> } catch (error) {<br><br> console.error('Error:', error);<br><br> }<br><br> } <p>fetchPosts();<br> </p>
To handle multiple AJAX requests in sequence, use Promises or Async/Await to chain requests.
fetch('/api/user')<br><br> .then(response => response.json())<br><br> .then(user => fetch(/api/posts?userId=${user.id}))<br><br> .then(response => response.json())<br><br> .then(posts => console.log(posts))<br><br> .catch(error => console.error('Error:', error));<br>
To build a real-world application, you need a backend API and a frontend interface. For this example, we’ll use a simple API to fetch weather data.
const apiKey = 'YOUR_API_KEY';<br><br> const city = 'London';<br><br> fetch(https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey})<br><br> .then(response => response.json())<br><br> .then(data => {<br><br> document.getElementById('weatherDisplay').innerHTML = <br> <h2>Weather in ${data.name}</h2> <br> <p>Temperature: ${(data.main.temp - 273.15).toFixed(2)}°C</p> <br> <p>Condition: ${data.weather[0].description}</p> <br> ;<br><br> })<br><br> .catch(error => console.error('Error fetching weather data:', error));<br>
Use JavaScript to create dynamic elements that update based on user input or server responses.
document.getElementById('searchButton').addEventListener('click', function() {<br><br> const city = document.getElementById('cityInput').value;<br><br> fetchWeatherData(city);<br><br> }); <p>function fetchWeatherData(city) {<br><br> fetch(https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey})<br><br> .then(response => response.json())<br><br> .then(data => {<br><br> document.getElementById('weatherDisplay').innerHTML = <br> <h2>Weather in ${data.name}</h2> <br> <p>Temperature: ${(data.main.temp - 273.15).toFixed(2)}°C</p> <br> <p>Condition: ${data.weather[0].description}</p> <br> ;<br><br> })<br><br> .catch(error => console.error('Error fetching weather data:', error));<br><br> }<br> </p>
Use HTML and CSS to format the data received from APIs. JavaScript allows you to manipulate the DOM and display the data dynamically.
Debouncing and Throttling are techniques used to limit the rate at which a function is executed. This is especially useful when working with APIs to avoid unnecessary requests.
function debounce(func, delay) {<br><br> let timeout;<br><br> return function(...args) {<br><br> clearTimeout(timeout);<br><br> timeout = setTimeout(() => func.apply(this, args), delay);<br><br> };<br><br> } <p>const fetchWeatherDebounced = debounce(fetchWeatherData, 300);<br><br> document.getElementById('cityInput').addEventListener('input', function() {<br><br> fetchWeatherDebounced(this.value);<br><br> });<br> </p>
Use JavaScript to manage the state of your AJAX requests and provide feedback to users, such as loading indicators or error messages.
function fetchWeatherData(city) {<br><br> const loader = document.getElementById('loader');<br><br> loader.style.display = 'block'; // Show loader <div class="highlight js-code-highlight"> <pre class="highlight plaintext">fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}`) .then(response => response.json()) .then(data => { loader.style.display = 'none'; // Hide loader // Display weather data... }) .catch(error => { loader.style.display = 'none'; // Hide loader console.error('Error fetching weather data:', error); });
}
To improve performance, cache API responses using JavaScript or a service worker. This reduces the number of requests sent to the server and speeds up the application.
const cache = new Map(); <p>function fetchWeatherData(city) {<br><br> if (cache.has(city)) {<br><br> displayWeatherData(cache.get(city)); // Use cached data<br><br> } else {<br><br> fetch(https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey})<br><br> .then(response => response.json())<br><br> .then(data => {<br><br> cache.set(city, data); // Cache the response<br><br> displayWeatherData(data);<br><br> })<br><br> .catch(error => console.error('Error fetching weather data:', error));<br><br> }<br><br> }<br> </p>
Use browser developer tools to inspect network requests, view responses, and debug JavaScript code:
Provide users with clear error messages and fallback options when AJAX requests fail.
fetch('https://api.example.com/data')<br><br> .then(response => response.json())<br><br> .then(data => {<br><br> // Display data...<br><br> })<br><br> .catch(error => {<br><br> console.error('Error fetching data:', error);<br><br> document.getElementById('errorMessage').innerText = 'Failed to load data. Please try again later.';<br><br> });<br>
In this tutorial, you’ve learned how to use AJAX and APIs to build dynamic web applications. You explored the basics of AJAX, the Fetch API, interacting with RESTful APIs, and advanced techniques like error handling, optimization, and security.
As you continue learning, explore more advanced topics like:
By Peymaan Abedinpour | پیمان عابدین پور
以上是试验 AJAX 和 API:初学者综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!