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

AJAX Discussion :

Erreur d’analyse XML : mal formé


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 63
    Par défaut Erreur d’analyse XML : mal formé
    Bonsoir à tous.
    Alors voilà, j'ai ce code js :
    Code javascript : 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
     
    var post = getHttpRequest();
      post.onreadystatechange = function () {
    	if (post.readyState === 4) {
    	  if (post.status === 200) {
    		alert(post.responseText);
    	  } else {
    		alert("error");
    	  }
    	}
      }
     
    function remove_event (event){
    	var data = new FormData();
    	data.append('asup', event);
     
     
    	post.open('POST', 'sup.php', true);
    	post.setRequestHeader('X-Requested-With', 'xmlhttprequest');
    	post.send(data);
    }

    La fonction getHttpRequest se contente de créer un objet httpRequest.
    J'ai un simple bouton qui appelle la fonction remove_event au onClick.

    Le fichier "sup.php contient simplement :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
        var_dump($_POST);
    ?>

    Juste pour vérifier que mon appel AJAX fonctionne avant d'aller plus loin (l'objectif sera de modifier une base de donnée).

    Seulement, lorsque je clique sur le bouton, dans la console ce message d'erreur apparaît :
    Erreur d’analyse XML : mal formé
    Emplacement : http://localhost/php/sup.php
    Numéro de ligne 1, Colonne 6 :

    Je ne comprends pas trop d'où cela peut venir étant donné le contenu de mon fichier php ...

    Merci pour votre aide !

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Regarde la source du XML, ou regarde la réponse brute dans l’onglet réseau de la console. Ça vient probablement d’un problème de configuration du serveur. Je pense qu’il renvoie le code source PHP, et le navigateur ne comprend pas le prologue <?php, il croit que c’est un prologue <?xml mal écrit.

    Tu peux aussi essayer ceci : ajoute un en-tête Content-Type: text/plain avant de faire var_dump pour forcer le navigateur à afficher la réponse comme du texte.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    header('Content-Type: text/plain');
    var_dump($_POST);
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 63
    Par défaut
    L'ajout du header ne fonctionne pas. Je suis en localhost sur xampp.

    Lorsque j'analyse la requête dans l'onglet réseau, le code d'état est à 200. En fait on dirait qu'elle fonctionne.
    Le "alert" ligne 6 dans le js s'affiche avec un contenu qui semble être bon, en revanche côté php rien ne se passe, $_POST est toujours vide .

  4. #4
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Citation Envoyé par auloma Voir le message
    L'ajout du header ne fonctionne pas.
    Peux-tu préciser « ne fonctionne pas » ?

    Le "alert" ligne 6 dans le js s'affiche avec un contenu qui semble être bon
    Quel est ce contenu ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 63
    Par défaut
    Je voulais dire que l'erreur est toujours présente dans la console.

    Le alert affiche : string(1) "1", 1 étant la valeur du paramètre "event" de la fonction remove_event.
    C'est le contenu du var_dump() dans le php.

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Je suis surpris, l’ajout du header aurait dû faire disparaitre le message d’erreur.
    Une autre solution est d’ajouter overrideMimeType :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	post.open('POST', 'sup.php', true);
    	post.overrideMimeType('text/plain');
    	post.setRequestHeader('X-Requested-With', 'xmlhttprequest');
    	post.send(data);
    Dans la console réseau, clique sur une ligne de requête pour accéder aux détails et vérifie le Content-Type de la réponse du serveur.

    D’autre part, je ne comprends pas pourquoi tu dis que $_POST est vide alors que tu vois la valeur de ton paramètre event ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/03/2020, 22h35
  2. [PHP][XSLT] Erreur Bizarre : Balise non fermée (XML mal formé [ndr])
    Par @min@ dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 09/05/2007, 11h06
  3. [XML] Erreur d'analyse XML : mal formé
    Par kespan dans le forum Valider
    Réponses: 2
    Dernier message: 15/01/2007, 18h57
  4. Erreur d'analyse XML : mal formé
    Par arsenik7 dans le forum Valider
    Réponses: 2
    Dernier message: 16/11/2006, 10h40
  5. [SQL] Erreur d'analyse XML : mal formé
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/08/2006, 09h10

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