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 :

entête fichier XML passé en post avec .Ajax()


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut entête fichier XML passé en post avec .Ajax()
    Salut à tous !

    Je m'explique, j'ai une liste générée dynamiquement qui affiche des données contenues dans ma BD (local).
    Cette liste s'affiche grâce une fonction JS.
    Sur cette liste j'ai un bouton "supprimer" qui me permet de supprimer un champ de ma table et donc une ligne de ma liste.

    Le problème intervient quand je clique sur ce bouton. Le comportement normal devrait être la suppression de l'item, régénération de la liste et affichage d'un message de confirmation juste au dessus de la liste.

    Le problème que j'ai identifié vient du deuxième POST, celui contenant le fichier XML qui va me permettre de régénérer la liste et confirmer ma suppression.
    Lors du premier POST, l'entête du fichier XML est composée de 13 lignes vides mais il n'y a pas d'erreur car le fichier XML contient uniquement de l'HTML.
    Mais lors du second POST, celui permettant de confirmer la suppression et régénérer la liste, il y une erreur due à cette longue entête vide et j'obtiens ceci :

    Erreur d'analyse XML : instruction de traitement XML ou texte pas au début d'une entité externe

    En tout cas, je précise que TOUT fonctionne et se comporte NORMALEMENT sur la preprod qui est sur un serveur OVH ET en local sur le mac de mon collègue mais pas sur mon pc.
    Je précise, je ne vais pas acheter de mac ! lol

    Ce problème en tout cas est bien du a mon pc et non a la fonction... Mais j'aimerai bien pouvoir développer sur mon poste !

    Voici en tout cas mes trois fichiers :

    lengow.js
    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
    /***************************************/
    /* Chargement de la liste des fonctions en fonction des paramètres de recherche et de filtrage : OK
    /***************************************/
    function list(start,page,filter,id) 
    {
    	$('#data_content_message').html("");
    	$.post("inc/lengow.inc.php", {show: "1",action: "list",start:""+start+"",page:""+page+"",filter:""+filter+"",id:""+id}, function(data)
    	{
    		if(data.length>0) 
    		{
    			$('#data_content_list').html(data);
    		}
    	});
    }
     
    /***************************************/
    /* Supression filtre type: 
    /***************************************/
    function action_suppr(id,action,item,start,page,filter)
    {
     
    	var mess="Etes-vous sûr de vouloir supprimer"; 
     
    	if(confirm(mess+" le filtre : "+item+" ?"))
    	{
    		$("div#data_content_dialog").removeClass("textgreen");
    		$("div#data_content_dialog").removeClass("textred");	
     
    		$.ajax({
    			type: "POST",
    			url: "inc/lengow.inc.php",
    			data: "show=1&lgw_id="+id+"&action="+action+"&item="+item,
    			dataType:"xml",
    			success: function(xml){
     
    				$(xml).find('informations').each(function(){
     
    					var status = $(this).attr('status');
    					var message = $(this).attr('message');
    					var messageerror = $(this).attr('messageerror');
     
    					if(status==1)
    					{
    						$("div#data_content_dialog").addClass("textgreen");
    						list(start,page,filter,promo,id);			
    					}
    					else
    					{
    						$("div#data_content_dialog").addClass("textred");
    					}
    					setTimeout("$('div#data_content_dialog').show('fast');", 0);
    					$("div#data_content_dialog").html(message);
    					setTimeout("$('div#data_content_dialog').hide('fast');", 7000);				
    				});	
    			}
    		});
    	}
    }
    catalog_lengow.php
    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
    // Pour les imports de javascript et de css spécifiques a certaines page
     
    	$importJSCSS.="	
     
    	<script type=\"text/javascript\" src=\"js/formValidation.js\"></script>
    	<script type=\"text/javascript\" src=\"js/catalog/lengow.js\"></script>
    	<script type=\"text/javascript\">
     
    	$(document).ready(function() 
     
    	{
     
    		list('','','','');
     
    	});		
     
    	</script>		
     
    	";
     
     
     
    	include_once("inc/restrictAreaUserIN.inc.php");
     
     
     
    	if($accesGaranted==1)
     
    	{
     
    	$content .="<div id=\"zoneGlobalOrderTodayRight\">
     
    					<div id=\"zoneGlobalMessageOrderTodayRight\">
    					</div>
    					<div id=\"zoneGlobalHautOrderTodayRight\">
    						Module d'export Lengow
    						<div id=\"zoneGlobalLoadOrderTodayRight\">
    						</div>
    					</div>
    					<div id=\"zoneGlobalMilieuOrderTodayRight\">				
    						<form name=\"form_search\" id=\"form_search\">
    						<fieldset>
    						<legend>Choisir la valeur Delta (valeur min. stock)</legend>	
    							<label id=\"form_delta\">Delta</label> : 
    							<input type=\"text\" value=\"\" id=\"form_delta\" name=\"form_delta\" title=\"\"/>&nbsp;&nbsp;&nbsp;		
    						</fieldset>
    						</form>	
    						<br/>
    						<br/>		
    							<label id=\"form_type\">Type</label> : 
    							<input type=\"text\" value=\"\" id=\"form_type\" name=\"form_type\" title=\"\"/>					
    							<div id=\"data_content_dialog\" class=\"txtbold\"></div>
    							<div id=\"data_content_list\"></div>
    					</div>	
    					<div id=\"zoneGlobalBasOrderTodayRight\">
    					</div>
     
    				</div>";
     
     
     
    	}
     
    	else
     
    	{
     
    		$content.="NO ACCESS";
     
    	}
    lengow.inc.php
    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
    else if(isset($_POST["action"]) && $_POST["action"]=="suppr")
    		{		
    			try
    			{
    				$req="DELETE FROM at8_lengow WHERE lgw_id='".$_POST["lgw_id"]."'";
     
    				if(mysql_query($req))
    				{
    					$message.="Suppression du filtre à bien été effectuée";
    				}	
    				else
    				{
    					$ok=0;
    					throw new Exception("ERROR SUPPR : ".$req.""); 
    				}
    				header('Content-Type: text/xml');
    				$resultat_xml = '<?xml version="1.0" encoding="UTF-8"?>';
    				$resultat_xml .= '<returnRequest>';
    				$resultat_xml .= '<informations status="'.$ok.'" message="'.$message.'" messageerror="'.$messageError.'"/>';
    				$resultat_xml .= '<vars/>';
    				$resultat_xml .= '</returnRequest>';
    				echo $resultat_xml;
    			}
    			catch(Exception $e)
    			{
    				header('Content-Type: text/xml');
    				$resultat_xml = '<?xml version="1.0" encoding="UTF-8"?>';
    				$resultat_xml .= '<returnRequest>';
    				$resultat_xml .= '<informations status="0" message="Problème lors de la suppression du filtre" messageerror="'.str_replace("<br/>","",str_replace("\n","",$e->getMessage())).'"/>';
    				$resultat_xml .= '<vars />';
    				$resultat_xml .= '</returnRequest>';
    				echo $resultat_xml;
    				}		
    		}
    J'utilise jQuery pour l'Ajax comme vous aurez pu le remarquer.

    Je précise ma configuration locale :
    - Windows 7 64bits
    - wamp
    - PHP 5.3.0
    - Editeur texte notepad++

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Je te rassure, le problème n'est pas dû à ton type de machine ou d'OS (donc, inutile d'acheter un Mac ) mais selon moi à la façon d'interpréter du XML en fonction des navigateurs (et de leur version, la plate forme pouvant jouer un rôle à ce niveau).

    En particulier, la façon d'accepter un retour XML comme valide peut différer. Or un XML valide doit débuter par un prologue XML. S'il n'est pas présent, tu deviens donc tributaire des largesses d'interprétation de ton navigateur...
    Donc tu ferais bien selon moi d'affiner tes fichiers PHP pour renvoyer un format XML valide si besoin.

    PS : le btz de brycebtz, c'est synonyme de aupa BO ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. (Débutant) envoyer un fichier XML a une url avec POST
    Par OlivierJ62 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 31/05/2011, 20h30
  2. [DTD] Valider mon fichier xml gràce à ma DTD avec DOM
    Par fonkyom dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 09/02/2008, 13h43
  3. Charger Fichiers XML dans une table avec SQL*LOADER
    Par devdev2003 dans le forum SQL
    Réponses: 2
    Dernier message: 14/01/2008, 10h40
  4. [XSLT] fichier.xml?tag=import récupérer avec get
    Par LeXo dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/10/2007, 14h28
  5. Entête fichier XML :
    Par comboDev dans le forum C#
    Réponses: 2
    Dernier message: 16/08/2007, 09h27

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