This article mainly introduces the method of asynchronous loading of ajax images. It analyzes the principles and related implementation techniques of asynchronous loading of ajax images in detail in the form of examples. Friends in need can refer to the following
Examples of this article Ajax method for asynchronously loading images. I share it with you for your reference. The details are as follows:
Pictures are generally relatively large, so they are loaded gradually after the basic web page is loaded. The whole loading process is very unsightly, or it gradually changes from blurry to blurry. Clear, or expanded from top to bottom (of course you can also think that these are good special effects). If the dynamic replacement of the image is achieved by regularly changing the src attribute of the img, the resulting flicker will be even more unacceptable. This is not something that can be pleasant with the alt attribute.
Contact the popular AJAX technology, which is known as "no" refresh. It uses the XMLHttpRequest object to initiate an asynchronous request. After the image is loaded, it is dynamically inserted into the "foreground" HTML page. It should be able to meet the needs, but the object returned by the XMLHttpRequest object has only two attributes, responseXML and responseText. The former is an XML object, and the latter is the returned plain text content. It seems that there is no binary data required for the picture... Taking a step back, even if it can be used responseText retrieves the binary data of the image, how can we insert it into the front page? Replace the src attribute of img with the requested url?
Just do it and write an image slideshow code to verify your idea:
<html> <head> <title>Image Slide</title> <script> function makeAsyncRequest(url, callback) { var httpRequest; if (window.XMLHttpRequest) { // Mozilla, Safari, ... httpRequest = new XMLHttpRequest(); if (httpRequest.overrideMimeType) { httpRequest.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { // IE try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4 && httpRequest.status == 200) callback(url); }; httpRequest.open('GET', url, true); httpRequest.send(''); } var i = 0; var max_i = 10; function displayImage() { var url = "./" + i + ".jpg"; makeAsyncRequest(url, function (url) { var p = document.getElementById("image"); var img = p.getElementsByTagName("img"); if (img.length == 0) { img = document.createElement("img"); while (p.childNodes.length > 0) p.removeChild(p.childNodes[0]); p.appendChild(img); } else img = img.item(0); img.src = url; if (i == max_i) i = 0; else i ++; window.setTimeout("displayImage();", 1000); }); } </script> </head> <body onload="displayImage();"> <p id="image"> </p> </body> </html>
The above code displays pictures 0.jpg - 10.jpg in a loop at a time interval of 1000 milliseconds. The effect is more obvious and flickering is indeed eliminated. So how does it work? The display of each image is divided into two steps:
Use the XMLHttpRequest object to obtain the image from the server, and cache the image to the local browser buffer.
Get the image from the local browser buffer for display.
Because the time from taking the picture to displaying it in the second step is very short, the user basically cannot detect any flicker. It can be seen that the above technology is based on the assumption that the requested image is cacheable. If the image is not cacheable, will the above code not work properly?
Let the code speak for itself and make some changes to the above code:
function displayImage() { var url = "./" + i + ".jpg"; var url = "./image.php?filename=" + i + ".jpg"; makeAsyncRequest(url, function (url) { var p = document.getElementById("image"); var img = p.getElementsByTagName("img");
Write another php script to transmit the requested image:
<?php header("Content-Type: image/jpeg"); header("Cache-Control: no-cache"); echo file_get_contents($_GET["filename"]); ?>
As expected , it flickered again...
It seems that we need to think of another way. Working behind closed doors will not work. Please ask Mr. Google for help! The hard work paid off, and I finally found it. I was overjoyed. The result still surprised me. IMG actually has an onload event callback interface. I can only be glad that my glasses are made of resin. "I am not afraid if my glasses fall off." Well, don't be afraid, don't be afraid, don't be afraid..."
What are you waiting for? Of course the code will serve you:
<html> <head> <title>Image Slide</title> <script> var i = 0; var max_i = 10; function displayImage() { var img = document.createElement("img"); img.onload = function () { var p = document.getElementById("image"); while (p.childNodes.length > 0) p.removeChild(p.childNodes[0]); p.appendChild(img); if (i == max_i) i = 0; else i ++; window.setTimeout("displayImage();", 1000); } img.src = "./" + i + ".jpg"; } </script> </head> <body onload="displayImage();"> <p id="image"> </p> </body> </html>
"She is an ungly girl!"Nothing to say, non-cacheable image Situation:
i ++; window.setTimeout("displayImage();", 1000); } img.src = "./" + i + ".jpg"; img.src = "./image.php?filename=" + i + ".jpg"; } </script> </head>
The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.
Related articles:
AJAX request queue implementation
Summary of several methods of using ajax to submit forms asynchronously
How to solve the problem of arrays in AJAX requests
The above is the detailed content of Ajax asynchronous loading image example analysis. For more information, please follow other related articles on the PHP Chinese website!

The shift from C/C to JavaScript requires adapting to dynamic typing, garbage collection and asynchronous programming. 1) C/C is a statically typed language that requires manual memory management, while JavaScript is dynamically typed and garbage collection is automatically processed. 2) C/C needs to be compiled into machine code, while JavaScript is an interpreted language. 3) JavaScript introduces concepts such as closures, prototype chains and Promise, which enhances flexibility and asynchronous programming capabilities.

Different JavaScript engines have different effects when parsing and executing JavaScript code, because the implementation principles and optimization strategies of each engine differ. 1. Lexical analysis: convert source code into lexical unit. 2. Grammar analysis: Generate an abstract syntax tree. 3. Optimization and compilation: Generate machine code through the JIT compiler. 4. Execute: Run the machine code. V8 engine optimizes through instant compilation and hidden class, SpiderMonkey uses a type inference system, resulting in different performance performance on the same code.

JavaScript's applications in the real world include server-side programming, mobile application development and Internet of Things control: 1. Server-side programming is realized through Node.js, suitable for high concurrent request processing. 2. Mobile application development is carried out through ReactNative and supports cross-platform deployment. 3. Used for IoT device control through Johnny-Five library, suitable for hardware interaction.

I built a functional multi-tenant SaaS application (an EdTech app) with your everyday tech tool and you can do the same. First, what’s a multi-tenant SaaS application? Multi-tenant SaaS applications let you serve multiple customers from a sing

This article demonstrates frontend integration with a backend secured by Permit, building a functional EdTech SaaS application using Next.js. The frontend fetches user permissions to control UI visibility and ensures API requests adhere to role-base

JavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.

The latest trends in JavaScript include the rise of TypeScript, the popularity of modern frameworks and libraries, and the application of WebAssembly. Future prospects cover more powerful type systems, the development of server-side JavaScript, the expansion of artificial intelligence and machine learning, and the potential of IoT and edge computing.

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Chinese version
Chinese version, very easy to use

Dreamweaver Mac version
Visual web development tools

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software