


Encapsulation orientée objet JavaScript des requêtes asynchrones XMLHttpRequest
function CallBackObject() { this.XmlHttp = this.GetHttpObject(); } CallBackObject.prototype.GetHttpObject = function() //动态为CallBackObject的原型添加了GetHttpObject共有方法 { //第一步:创建XMLHttpRequest对象 //进行兼容性判断 var xmlhttp; /*@cc_on @if (@_jscript_version >= 5) try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @else xmlhttp = false; @end @*/ if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } CallBackObject.prototype.DoCallBack = function(URL) { if( this.XmlHttp ) { if( this.XmlHttp.readyState == 4 || this.XmlHttp.readyState == 0 ) { var oThis = this; //第二步:注册回调方法,当服务器处理结束返回数据以后利用回调方法实现局部的页面刷新数据 //这个回调方法实际上在每次XMLHttpRequest对象的readyState属性的值发生变化的时候都会被调用 this.XmlHttp.onreadystatechange = function() { //根据XmlHttp.readyState返回值不同调用不同的方法。 oThis.ReadyStateChange(); }; //第三步:设置和服务器交互的相应参数 this.XmlHttp.open('POST', URL); this.XmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //第四步:设置向服务器发送的数据,启动和服务器端交互 this.XmlHttp.send(null); } } } CallBackObject.prototype.AbortCallBack = function() { if( this.XmlHttp ) this.XmlHttp.abort(); } CallBackObject.prototype.ReadyStateChange = function() { //第五步:判断和服务器交互是否完成,还要判断服务器端是否正确返回数据 //this.XmlHttp.readyState == 0初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置。 if (this.XmlHttp.readyState == 1) { //open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。 this.OnLoading(); } else if (this.XmlHttp.readyState == 2) { //Send() 方法已调用,HTTP 请求已发送到 Web 服务器。未接收到响应。 this.OnLoaded(); } else if (this.XmlHttp.readyState == 3) { //Receiving 所有响应头部都已经接收到。响应体开始接收但未完成。 this.OnInteractive(); } else if (this.XmlHttp.readyState == 4) { //Loaded HTTP 响应已经完全接收。 if (this.XmlHttp.status == 0) this.OnAbort(); else if (this.XmlHttp.status == 200 && this.XmlHttp.statusText == "OK") this.OnComplete(this.XmlHttp.responseText, this.XmlHttp.responseXML); else this.OnError(this.XmlHttp.status, this.XmlHttp.statusText, this.XmlHttp.responseText); } } CallBackObject.prototype.OnLoading = function() { // Loading } CallBackObject.prototype.OnLoaded = function() { // Loaded } CallBackObject.prototype.OnInteractive = function() { // Interactive } CallBackObject.prototype.OnComplete = function(responseText, responseXml) { // Complete } CallBackObject.prototype.OnAbort = function() { // Abort } CallBackObject.prototype.OnError = function(status, statusText) { // Error }
La méthode d'appel est la suivante :
<script type="text/javascript"> function createRequest() { var name = escape(document.getElementById("name").value); var cbo = new CallBackObject(); cbo.OnComplete = Cbo_Complete; cbo.onError = Cbo_Error; cbo.OnLoaded = OnLoading; cbo.DoCallBack("AjaxTest.aspx?name=" + name); } function OnLoading() { alert("OnLoading " ); } function Cbo_Complete(responseText, responseXML) { alert("成功 "+responseText); } function Cbo_Error(status, statusText, responseText) { alert(responseText); } </script>
événement onreadystatechange
Chaque fois que la valeur readyState change, l'objet XMLHttpRequest déclenchera un événement readystatechange. Parmi eux, l'attribut onreadystatechange reçoit une valeur EventListener - indiquant à la méthode que l'objet sera activé chaque fois que la valeur readyState change.
Attribut ResponseText
Cet attribut ResponseText contient le contenu textuel de la réponse HTTP reçue par le client. Lorsque la valeur readyState est 0, 1 ou 2, ResponseText contient une chaîne vide. Lorsque la valeur readyState est 3 (réception), la réponse contient les informations de réponse inachevée du client. Lorsque readyState vaut 4 (chargé), le réponseText contient des informations de réponse complètes.
Attribut ResponseXML
Cet attribut ResponseXML est utilisé pour décrire la réponse XML lorsqu'une réponse HTTP complète est reçue (readyState est 4 à ce moment, l'en-tête Content-Type spécifie le type MIME (média) sous la forme text/) ; xml, application /xml ou se termine par xml. Si l’en-tête Content-Type ne contient pas l’un de ces types de média, la valeur de réponseXML est nulle. Chaque fois que la valeur readyState n’est pas 4, la valeur de réponseXML est également nulle.
En fait, la valeur de l'attribut ResponseXML est un objet de type interface document, utilisé pour décrire le document en cours d'analyse. Si le document ne peut pas être analysé (par exemple, si le document n'est pas bien formé ou si le codage de caractères correspondant du document n'est pas pris en charge), alors la valeur de réponseXML sera nulle.
Attribut de statut
Cet attribut de statut décrit le code de statut HTTP et son type est court. De plus, cet attribut d'état n'est disponible que lorsque la valeur readyState est 3 (réception) ou 4 (chargé). Tenter d'accéder à la valeur de status lorsque readyState est inférieur à 3 lèvera une exception.
Attribut StatusText
Cet attribut statusText décrit le texte du code d'état HTTP et n'est disponible que si la valeur readyState est 3 ou 4. Tenter d'accéder à la propriété statusText lorsque readyState est une autre valeur lèvera une exception.
Pour plus d'articles liés à l'encapsulation orientée objet par JavaScript des requêtes asynchrones XMLHttpRequest, veuillez faire attention au site Web PHP chinois !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

Une fois que vous avez maîtrisé le didacticiel TypeScript de niveau d'entrée, vous devriez être en mesure d'écrire votre propre code dans un IDE qui prend en charge TypeScript et de le compiler en JavaScript. Ce tutoriel plongera dans divers types de données dans TypeScript. JavaScript a sept types de données: null, non défini, booléen, numéro, chaîne, symbole (introduit par ES6) et objet. TypeScript définit plus de types sur cette base, et ce tutoriel les couvrira tous en détail. Type de données nuls Comme javascript, null en typeScript

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

JavaScript peut être exécuté dans PowerPoint et peut être implémenté en appelant des fichiers JavaScript externes ou en intégrant des fichiers HTML via VBA. 1. Pour utiliser VBA pour appeler les fichiers JavaScript, vous devez activer les macros et avoir des connaissances en programmation VBA. 2. ENCHED des fichiers HTML contenant JavaScript, qui sont simples et faciles à utiliser mais sont soumis à des restrictions de sécurité. Les avantages incluent les fonctions étendues et la flexibilité, tandis que les inconvénients impliquent la sécurité, la compatibilité et la complexité. En pratique, l'attention doit être accordée à la sécurité, à la compatibilité, aux performances et à l'expérience utilisateur.
