J'ai été libre récemment, j'ai donc pris le temps de régler quelques trucs sur la méthode ajax. Dans les projets, on constate souvent que de nombreux problèmes dans la section ajax sont causés par l'insensibilité à la casse des attributs, des méthodes et des événements, ce qui conduit finalement à des problèmes dans le fonctionnement du programme. Nous allons vous présenter ici quelques problèmes courants liés au cas de. quelques attributs, événements et méthodes courants des objets ajax. Résumé
J'ai été relativement libre récemment, j'ai donc pris le temps de trier certaines choses sur la méthode ajax. Dans les projets, nous constatons souvent que de nombreux problèmes dans la section ajax sont causés par l'insensibilité à la casse des attributs, des méthodes et des événements, ce qui conduit finalement à des problèmes dans le fonctionnement du programme.
Voici quelques attributs, événements et méthodes courants des objets ajax
1) Les attributs des objets ajax standard incluent readyState, status, ResponseText, ResponseXML
2) Les attributs d'objet ajax non standard, pour les navigateurs IE, incluent le corps de réponse et le flux de données binaires. Si la compatibilité du navigateur n'est pas prise en compte, cet attribut + VBScript peut très bien résoudre le problème des caractères tronqués.
Code Visual Basic
Function Bytes2BStr(vin)'二进制转字串 strreturn = "" for i = 1 to lenb(vin) thischarcode = ascb(midb(vin,i,1)) if thischarcode < &h80 then strreturn = strreturn & chr(thischarcode) else nextcharcode = ascb(midb(vin,i+1,1)) strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode)) i = i + 1 end if next Bytes2BStr = strreturn End Function
3) Événement onreadystatechange, fonction de transition d'état
4) Les méthodes incluent setRequestHeader, open et send, qui sont utilisées pour définir l'en-tête de réponse. Lorsque la méthode de soumission est spécifiée comme POST, le type de contenu doit être défini sur application/x-www-form-. urlencoded. Si cette réponse n'est pas définie en-tête, la page dynamique demandée ne peut pas obtenir la valeur sous forme de paires clé-valeur, mais les données soumises peuvent être générées à partir du flux binaire.
Référence
Comment obtenir le contenu soumis lorsque ajax est spécifié comme publication mais que le type de contenu n'est pas défini ou que la clé n'est pas spécifiée
Facile à apparaître. Mauvaises questions
1) Pour les objets créés à l'aide de XMLHttpRequest, y compris IE7+, les attributs sont strictement sensibles à la casse. Sinon, la valeur de l'attribut. sera indéfini. Par exemple, readyState est écrit sous la forme readystate et ResponseText est écrit sous la forme ResponseText.
2) Pour le navigateur IE, si l'activexobject est jugé en premier, alors activexobject sera exécuté pour créer l'objet xhr, les attributs, les événements et les méthodes créés à l'aide d'acx ne sont pas sensibles à la casse <🎜. >
3) Lorsqu'il est créé à l'aide de XMLHttpRequest, onreadystatechange doit être entièrement en minuscules, sinon cela équivaut à attribuer un attribut personnalisé à l'objet xhr au lieu de la fonction de transition d'état réelle. De cette façon, le rappel n'est jamais exécuté. Pour les objets xhr créés par IE à l'aide d'activexobject, ils ne sont pas sensibles à la casse 4) Comme pour les points 2 et 3, lorsque XMLHttpRequest est créé, la méthode appelante doit être sensible à la casse, sinon il n'y aura pas d'erreur et une invite indiquant que la méthode est introuvable. IE n'est pas sensible à la casse lors de l'utilisation d'activexobject.Quelques suggestions de code ajax manuscrit
1) Lors de la soumission pour get, il n'est pas nécessaire de définir le type de contenu, sauf si la demande est quelque chose qui doit être vérifié pour la génération de type de contenu Certains fichiers de format de données correspondants. Par exemple, le service Web d'asp.net vérifiera le type de contenu si le type de contenu est spécifié comme application/json, la chaîne de format json correspondante sera générée. 2) Lors de la soumission pour get, s'il n'y a pas de données, il est préférable d'ajouter une valeur null comme paramètre lors de l'appel de la méthode d'envoi. xhr.send(null);3) Lors de la soumission d'un message, n'oubliez pas d'appeler la méthode setRequestHeader pour définir le type de contenu sur application/x-www-form-urlencodedaprès l'appel la méthode open.
4) Lors de l'utilisation de ResponseText, ResponseXML et ResponseBody [IE uniquement], l'attribut status doit être utilisé lorsque readyState==4, status status==200 [test en ligne] ou status status==0 [ tests locaux]Code JavaScript
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("microsft.xmlhttp"); xhr.open('get', 'index.html', true); xhr.onreadystatechange = function () { if (4 == xhr.readyState) { if (200 == xhr.status || 0 == xhr.status) { //=========正常返回后的处理代码 } else alert('动态页出问题了~~'); } } xhr.send(null);
S'il est exécuté de manière synchrone, vous pouvez utiliser directement l'attribut ResponseText ou ResponseXML après l'envoi. Il n'est pas nécessaire d'ajouter la fonction de transition d'état onreadystatechange. Cependant, si la vitesse du réseau est lente pendant la synchronisation, il est facile de geler le navigateur et l'expérience utilisateur n'est pas bonne.
Ajax envoyant et recevant des requêtes
Analyse d'exemple d'image de chargement asynchrone Ajax
Explication détaillée de l'objet AJAX XMLHttpRequest
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!