您应该熟悉的另外 20 个出色的 AJAX 效果

1. AJAX 简介

AJAX 是 Asynchronous JavaScript and XML 的简称,意为异步的 JavaScript 和 XML。AJAX 可以有效地解决 Web 应用程序中数据传输的问题,实现异步加载。

与传统的同步加载不同,AJAX 可以使 Web 应用程序非常快速和高效地加载,因为不必在每次用户交互时都重新加载整个页面。

在 AJAX 中,通过 JavaScript 去请求一个 URL,然后去解析返回的 XML 文件,从而实现异步加载。

下面是一个简单的 AJAX 请求示例:

let xhr = new XMLHttpRequest(); // 创建 XMLHttpRequest 对象

xhr.open('GET', 'url', true); // 配置请求

xhr.onreadystatechange = function() { // readyState 改变时执行回调

if (xhr.readyState === 4 && xhr.status === 200) { // 请求成功

console.log(xhr.responseText);

}

};

xhr.send(); // 发送请求

2. AJAX 效果

下面介绍 20 个出色的 AJAX 效果,这些效果可以让您的 Web 应用程序更加优美和高效。

2.1 AJAX 表单提交

使用 AJAX 可以实现表单的异步提交,避免了页面跳转的问题,从而提升用户体验。

以下是一个简单的 AJAX 表单提交的例子:

let form = document.querySelector('form');

form.addEventListener('submit', function(event) {

event.preventDefault(); // 防止表单跳转

let xhr = new XMLHttpRequest();

xhr.open('POST', 'url', true);

xhr.setRequestHeader('Content-Type', 'application/json');

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

console.log(xhr.responseText);

}

};

let data = {

username: form.elements.username.value,

password: form.elements.password.value

};

xhr.send(JSON.stringify(data)); // 发送 JSON 数据

});

2.2 AJAX 自动补全

使用 AJAX 可以实现自动补全功能,例如搜索字词时,可以通过 AJAX 请求获取匹配的结果,提升用户体验。

以下是一个简单的 AJAX 自动补全的例子:

let input = document.querySelector('input[type=search]');

input.addEventListener('input', function() {

let xhr = new XMLHttpRequest();

xhr.open('GET', 'url' + input.value, true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let results = JSON.parse(xhr.responseText);

// 将结果显示在页面上

}

};

xhr.send();

});

2.3 AJAX 分页加载

使用 AJAX 可以实现分页加载功能,避免了一次性加载大量数据的问题,从而提高网站的性能。

以下是一个简单的 AJAX 分页加载的例子:

let page = 1;

let loading = false;

function loadMore() {

if (!loading) {

loading = true;

let xhr = new XMLHttpRequest();

xhr.open('GET', 'url?page=' + page, true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let data = JSON.parse(xhr.responseText);

// 将数据添加到页面上

page++;

loading = false;

}

};

xhr.send();

}

}

window.addEventListener('scroll', function() {

if (document.documentElement.clientHeight + window.pageYOffset >= document.body.offsetHeight) {

loadMore();

}

});

2.4 AJAX 图片切换

使用 AJAX 可以实现图片切换功能,在页面不刷新的情况下更换图片。

以下是一个简单的 AJAX 图片切换的例子:

let img = document.querySelector('img');

let button = document.querySelector('button');

button.addEventListener('click', function() {

let xhr = new XMLHttpRequest();

xhr.open('GET', 'url', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let url = JSON.parse(xhr.responseText);

img.src = url;

}

};

xhr.send();

});

2.5 AJAX 选项卡

使用 AJAX 可以实现选项卡功能,可以在不刷新页面的情况下切换页面内容。

以下是一个简单的 AJAX 选项卡的例子:

let tabs = document.querySelectorAll('.tab');

let contents = document.querySelectorAll('.content');

for (let i = 0; i < tabs.length; i++) {

tabs[i].addEventListener('click', function() {

let xhr = new XMLHttpRequest();

xhr.open('GET', 'url' + i, true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

contents[i].innerHTML = xhr.responseText;

}

};

xhr.send();

});

}

2.6 AJAX 加载更多评论

使用 AJAX 可以实现加载更多评论功能,避免一次性加载过多数据而导致页面卡顿。

以下是一个简单的 AJAX 加载更多评论的例子:

let button = document.querySelector('button');

let comments = document.querySelector('.comments');

let page = 1;

button.addEventListener('click', function() {

let xhr = new XMLHttpRequest();

xhr.open('GET', 'url?page=' + page, true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let data = JSON.parse(xhr.responseText);

// 将数据添加到页面上

page++;

}

};

xhr.send();

});

2.7 AJAX 无限滚动

使用 AJAX 可以实现无限滚动功能,避免了一次性加载大量数据而导致页面卡顿。

以下是一个简单的 AJAX 无限滚动的例子:

let container = document.querySelector('.container');

let page = 1;

let loading = false;

window.addEventListener('scroll', function() {

if (!loading && document.documentElement.clientHeight + window.pageYOffset >= container.offsetHeight) {

loading = true;

let xhr = new XMLHttpRequest();

xhr.open('GET', 'url?page=' + page, true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let data = JSON.parse(xhr.responseText);

// 将数据添加到页面上

page++;

loading = false;

}

};

xhr.send();

}

});

2.8 AJAX 加载 SVG 图像

使用 AJAX 可以实现加载 SVG 图像的功能。

以下是一个简单的 AJAX 加载 SVG 图像的例子:

let svg = document.querySelector('svg');

let xhr = new XMLHttpRequest();

xhr.open('GET', 'image.svg', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let xml = xhr.responseXML;

svg.appendChild(xml.documentElement);

}

};

xhr.send();

2.9 AJAX 加载同域 HTML

使用 AJAX 可以实现加载同域 HTML 的功能。

以下是一个简单的 AJAX 加载同域 HTML 的例子:

let container = document.querySelector('.container');

let xhr = new XMLHttpRequest();

xhr.open('GET', 'page.html', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

container.innerHTML = xhr.responseText;

}

};

xhr.send();

2.10 AJAX 加载外域 HTML

使用 AJAX 可以实现加载外域 HTML 的功能。

以下是一个简单的 AJAX 加载外域 HTML 的例子:

let container = document.querySelector('.container');

let xhr = new XMLHttpRequest();

xhr.open('GET', 'https://www.example.com/page.html', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

container.innerHTML = xhr.responseText;

}

};

xhr.send();

2.11 AJAX 加载同域 XML

使用 AJAX 可以实现加载同域 XML 的功能。

以下是一个简单的 AJAX 加载同域 XML 的例子:

let xhr = new XMLHttpRequest();

xhr.open('GET', 'data.xml', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let xml = xhr.responseXML;

let items = xml.getElementsByTagName('item');

for (let i = 0; i < items.length; i++) {

// 处理数据

}

}

};

xhr.send();

2.12 AJAX 加载同域 JSON

使用 AJAX 可以实现加载同域 JSON 的功能。

以下是一个简单的 AJAX 加载同域 JSON 的例子:

let xhr = new XMLHttpRequest();

xhr.open('GET', 'data.json', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let data = JSON.parse(xhr.responseText);

}

};

xhr.send();

2.13 AJAX 加载外域 JSONP

使用 AJAX 可以实现加载外域 JSONP 的功能。

以下是一个简单的 AJAX 加载外域 JSONP 的例子:

let script = document.createElement('script');

script.src = 'https://www.example.com/data.js';

document.head.appendChild(script);

function processData(data) {

// 处理数据

}

2.14 AJAX 实时搜索

使用 AJAX 可以实现实时搜索的功能。

以下是一个简单的 AJAX 实时搜索的例子:

let input = document.querySelector('input[type=search]');

input.addEventListener('input', function() {

let xhr = new XMLHttpRequest();

xhr.open('GET', 'url' + input.value, true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let results = JSON.parse(xhr.responseText);

// 将结果显示在页面上

}

};

xhr.send();

});

2.15 AJAX 加载 Google 地图

使用 AJAX 可以实现加载 Google 地图的功能。

以下是一个简单的 AJAX 加载 Google 地图的例子:

let map = document.querySelector('.map');

let xhr = new XMLHttpRequest();

xhr.open('GET', 'https://maps.googleapis.com/maps/api/js', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let script = document.createElement('script');

script.textContent = xhr.responseText;

document.head.appendChild(script);

let map = new google.maps.Map(container, {

center: {lat: -34.397, lng: 150.644},

zoom: 8

});

}

};

xhr.send();

2.16 AJAX 加载 YouTube 视频

使用 AJAX 可以实现加载 YouTube 视频的功能。

以下是一个简单的 AJAX 加载 YouTube 视频的例子:

let video = document.querySelector('.video');

let xhr = new XMLHttpRequest();

xhr.open('GET', 'https://www.youtube.com/player_api', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let script = document.createElement('script');

script.textContent = xhr.responseText;

document.head.appendChild(script);

let player = new YT.Player(video, {

videoId: 'VIDEO_ID'

});

}

};

xhr.send();

2.17 AJAX 加载 Twitter 内容

使用 AJAX 可以实现加载 Twitter 内容的功能。

以下是一个简单的 AJAX 加载 Twitter 内容的例子:

let container = document.querySelector('.tweets');

let xhr = new XMLHttpRequest();

xhr.open('GET', 'https://publish.twitter.com/oembed?url=https://twitter.com/twitter/status/TWEET_ID', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let data = JSON.parse(xhr.responseText);

container.innerHTML = data.html;

}

};

xhr.send();

2.18 AJAX 加载 Flickr 图像

使用 AJAX 可以实现加载 Flickr 图像的功能。

以下是一个简单的 AJAX 加载 Flickr 图像的例子:

let container = document.querySelector('.photos');

let xhr = new XMLHttpRequest();

xhr.open('GET', 'https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=API_KEY&text=SEARCH_TEXT&format=json&nojsoncallback=1', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let data = JSON.parse(xhr.responseText);

let photos = data.photos.photo;

for (let i = 0; i < photos.length; i++) {

let photo = photos[i];

let img = document.createElement('img');

img.src = 'https://farm' + photo.farm + '.staticflickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '.jpg';

container.appendChild(img);

}

}

};

xhr.send();

2.19 AJAX 加载天气信息

使用 AJAX 可以实现加载天气信息的功能。

以下是一个简单的 AJAX 加载天气信息的例子:

let location = '北京';

let temperature = 'celsius';

let xhr = new XMLHttpRequest();

xhr.open('GET', 'https://api.openweathermap.org/data/2.5/weather?q=' + location + '&units=' + temperature + '&appid=API_KEY', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let data = JSON.parse(xhr.responseText);

let temperature = data.main.temp;

let description = data.weather[0].description;

let humidity = data.main.humidity;

// 处理天气信息

}

};

xhr.send();

2.20 AJAX 加载网页模板

使用 AJAX 可以实现加载网页模板的功能。

以下是一个简单的 AJAX 加载网页模板的例子:

let container = document.querySelector('.template');

let xhr = new XMLHttpRequest();

xhr.open('GET', 'template.html', true);

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

let html = xhr.responseText;

// 处理模板

}

};

xhr.send();