IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Ajax, json et IE8 [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Goldocrack
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 126
    Par défaut Ajax, json et IE8
    Bonjour à tous,

    Ma requête Ajax fonctionne sur tous les navigateurs sauf Internet Explorer 8 (je suppose que les IE inférieurs posent également problème sans pouvoir tester).

    Je précise que même IE9 et + fonctionne.

    En fait la requête me renvoie correctement mes données mais passe dans l'évènement "error".
    L'analyse de l'erreur affiche des données avec 3 carrés (caractère de contrôle non affichable).
    Exemple de retour de données : carrécarrécarré{"adhesion":{"0":{"id":"3","nom...

    Si dans le PHP juste avant de retourner les données je fais un substr sur le premier caractère c'est bien le { qui est retourné.

    Quoi rajouter / modifier dans ma requête pour éviter ce problème ?

    Merci beaucoup d'avance !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $.ajax( {
    	url: "http:php/donneeAdherents.php",
    	type: "POST",
    	timeout: 60000, //1 minute
    	//dataType: "json",
    	cache: false,
    	complete: function(retour) {
    		console.log('complete');
    	},
    	success: function(retour) {
    		console.log('success');
    	},
    	error: function(retour, codeStatut, erreur) {
    		console.log('error');
    		dump(erreur);
    		console.log(codeStatut);
    	}				
    });

  2. #2
    Membre confirmé Avatar de Goldocrack
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 126
    Par défaut précision
    Alors je vais apporter des précisions dans mon travail :

    IE 8 passe forcément dans la condition "error".

    J'ai 3 caractères qui pollue le résultat au tout début de la chaîne.
    En bidouillant plusieurs fois mon .js et mon .php j'arrive à avoir 2 caractères au début au lieu de 3 (mais impossible d'avoir moins).

    Le code char du caractère polluant est 65279

    Je pourrais travailler dans la condition " error " et envoyer dans une fonction de traitement qui supprimerait les caractères polluants avant de renvoyer dans la fonction de traitement appelée à l'origine par " success "
    MAIS cela m'oblige à recoder toutes les pages où se trouvent des requêtes Ajax...

    Comment puis-je arriver à traiter ce fonctionnement bizarre pour que IE passe dans la condition " success " ?

  3. #3
    Membre confirmé Avatar de Goldocrack
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 126
    Par défaut BOM UTF8
    Bon je me réponds moi même après de trèèèèès nombreux essais.

    Si ça aide quelqu'un un jour :

    ce code permet sur votre serveur de nettoyer les fichiers de ces caractères indésirables, la conversion en UT8 without BOM dans Notepad++ n'ayant pas résolu le problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <?php 
    // Tell me the root folder path.
    // You can also try this one
    // $HOME = $_SERVER["DOCUMENT_ROOT"];
    // Or this
    // dirname(__FILE__)
    $HOME = dirname(__FILE__);
     
    // Is this a Windows host ? If it is, change this line to $WIN = 1;
    $WIN = 0;
     
    // That's all I need
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>UTF8 BOM FINDER and REMOVER</title>
    <style>
    body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }
    .FOUND { color: #F30; font-size: 14px; font-weight: bold; }
    </style>
    </head>
    <body>
    <?php
    $BOMBED = array();
    RecursiveFolder($HOME);
    echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">';
    foreach ($BOMBED as $utf) { echo $utf ."<br />\n"; }
    echo '</p>';
     
    // Recursive finder
    function RecursiveFolder($sHOME) {
      global $BOMBED, $WIN;
     
      $win32 = ($WIN == 1) ? "\\" : "/";
     
      $folder = dir($sHOME);
     
      $foundfolders = array();
      while ($file = $folder->read()) {
        if($file != "." and $file != "..") {
          if(filetype($sHOME . $win32 . $file) == "dir"){
            $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;
          } else {
            $content = file_get_contents($sHOME . $win32 . $file);
            $BOM = SearchBOM($content);
            if ($BOM) {
              $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;
     
              // Remove first three chars from the file
              $content = substr($content,3);
              // Write to file 
              file_put_contents($sHOME . $win32 . $file, $content);
            }
          }
        }
      }
      $folder->close();
     
      if(count($foundfolders) > 0) {
        foreach ($foundfolders as $folder) {
          RecursiveFolder($folder, $win32);
        }
      }
    }
     
    // Searching for BOM in files
    function SearchBOM($string) { 
        if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;
        return false; 
    }
    ?>
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Ajax-JSON et Javascript
    Par forzalec dans le forum jQuery
    Réponses: 3
    Dernier message: 04/03/2014, 14h24
  2. [AJAX] Récupérer un tableau à plusieurs dimension reçu avec ajax (json)
    Par krizentherm dans le forum jQuery
    Réponses: 4
    Dernier message: 29/07/2013, 17h15
  3. [AJAX] Ajax Json Php et Base de données
    Par langme dans le forum AJAX
    Réponses: 2
    Dernier message: 18/10/2012, 18h17
  4. [AJAX] Requête AJAX plante avec IE8 mais pas avec FF
    Par MickSou dans le forum jQuery
    Réponses: 19
    Dernier message: 07/09/2012, 09h25
  5. Ajax, json, utf8, comment ne perdre aucun caractere
    Par dembroski dans le forum jQuery
    Réponses: 2
    Dernier message: 04/02/2010, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo