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 :

Firefox ne traite pas la réponse du serveur [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut Firefox ne traite pas la réponse du serveur
    Bonsoir,

    Je cherche à afficher un tableau html géneré par php via un jQuery.ajax().

    Le code suivant fonctionne sous Chrome ET (surprenant) IE, mais pas sous Firefox

    Firefox ne semble pas pouvoir lire la réponse du serveur pourtant correctement renvoyée et interprétée par Chrome et IE.

    le javascript:
    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
    <div id="pshopactivity">
    wrtwtywy
    </div>
    <script language="javascript" type="text/javascript">
    var t;
    function getPshopActivity(order,fold,file)
    {
    	if(file==undefined)var file='';
    	if(fold==undefined)var fold='';
    	var datos=$.extend({},{
    		func:'pshopactivity',
    		'ajax':'ajax',
    		'order':order,
    		'file':file,
    		'fold':fold
    	});
    	$.ajax({
    		type : 'POST',
    		//cache: false,
    		url : 'index.php',
    		dataType : 'html',
    		data: datos,
    		//contentType: "application/x-www-form-urlencoded",
    		//beforeSend:setHeader,
    		error:function (xhr, ajaxOptions, thrownError){
    			alert(xhr.status);
    			alert(xhr.statusText);
    			alert(thrownError);
    		 },
    		success: function(data)
    		{
    			$('#pshopactivity').html(data);
    			/*
    			txt='';
    			var dirs;
    			var file;
    			for(dirs in data)
    			{
    				txt+=dirs+'<br />';
    			}
     
    			clearTimeout(t);
    			t=setTimeout("getPshopActivity('getlist');",5000);*/
    		}
    	});
    	return false;
    }
    $(document).ready(function()
    {
    	getPshopActivity('getlist');
    }
    );
    </script>
    Le php:

    Code php : 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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <?php
    if(isset($_POST['order']))
    {
     
    	switch ($_SERVER['HTTP_HOST']) {
    		case $_SERVER['HTTP_HOST']:
    		header('Access-Control-Allow-Origin: http://MonUrl');
    		header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
    		header('Access-Control-Max-Age: 1000');
    		header('Access-Control-Allow-Headers: Content-Type');
    		break;
    	}
    	$tasks=array();
    	exec('tasklist',$tasks);
    	$estado='Apagado';
    	foreach($tasks as $proc)
    	{
    		if(substr_count($proc,'hotoshop.exe')>=1)$estado='Encendido';	
    	}
    	$dirs=array(
    	'Pendientes'=>array(),
    	'Ejecutando'=>array(),
    	'Hechos'=>array()
    	);
    	$count=0;
    	foreach($dirs as $iddir=>$dir)
    	{
    		/*
                    Listage de fichiers sur mon serveur
                    */
    	}
    	if(count($dirs['Ejecutando'])>=1)$estado='Trabajando';
    	echo'
    	<table width="95%" cellpadding="5" cellspacing="0" border="1" align="center">
    	<tr>
    	<td colspan="3" class="titre2" align="center">Photoshop en el servidor</td>
    	</tr>
    	<tr>
    	<td colspan="3" class="titre2" align="center">Estado actual: '.$estado.'</td>
    	</tr>
    	';
    	if($_POST['order']=='getlist')
    	{
     
    		foreach($dirs as $iddir=>$dir)
    		{
    			echo '
    			<tr>
    			<td colspan="3">
    			<strong>'.$iddir.':</strong>
    			</td>
    			</tr>';
    			foreach($dir as $file)
    			{
    				echo '
    				<tr>
    				<td>
    				<input type="button" value="Ejecutar" onclick="getPshopActivity(\'exec\',\''.$iddir.'\',\''.urlencode(basename($file)).'\');" ';
    				if($estado=='Trabajando' or $iddir=='Ejecutando') echo ' disabled ';
    				echo' />
    				</td>';
    				echo '
    				<td>
    				<input type="button" value="Borrar" onclick="getPshopActivity(\'borrar\',\''.$iddir.'\',\''.urlencode(basename($file)).'\');" ';
    				if($estado=='Trabajando' or $iddir=='Ejecutando') echo ' disabled ';
    				echo' />
    				</td>
    				<td>
    				'.utf8_encode(basename($file)).'
    				</td>
    				</tr>';	
    			}
     
    		}
    	}
     
     
    	echo'
    	<tr>
    	<td colspan="3" align="center">
    	<input type="button" value="Ejecutar todos los scripts pendientes" onclick="getPshopActivity(\'exec\',\'\',\'Automator\');" ';
    	if($estado=='Trabajando') echo ' disabled ';
    	echo' />
    	</td>
    	</tr>
    	</table>';
    }
    ?>

    Mes headers depuis Firebug:

    Requête:
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0
    Accept: text/html, */*; q=0.01
    Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    X-Requested-With: XMLHttpRequest
    Referer: http://localhost/****
    Content-Length: 54
    Cookie: PHPSESSID=tlgjes9d8pajdhv40o8kgjrej2
    Connection: keep-alive
    Pragma: no-cache
    Cache-Control: no-cache

    Réponse:
    Date: Mon, 21 Jan 2013 19:08:40 GMT
    Server: Apache/2.2.17 (Win32) PHP/5.3.4
    X-Powered-By: PHP/5.3.4
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Access-Control-Allow-Origin: http://localhost
    Access-Control-Allow-Methods: POST, GET, OPTIONS
    Access-Control-Max-Age: 1000
    Access-Control-Allow-Headers: Content-Type
    Content-Length: 7105
    Keep-Alive: timeout=5, max=99
    Connection: Keep-Alive
    Content-Type: text/html
    J'ai lu ça : http://www.developpez.net/forums/d46...-ajax-firefox/
    ça aussi : http://www.developpez.net/forums/d60...-ajax-firefox/
    puis ça : http://www.developpez.net/forums/d77...-sous-firefox/
    et à peu près tout ce que je trouvais comme résultat de GrosGueule sur les combinaisons de "AJAX JQuery Firefox POST headers".

    Et rien n'y fait, j'ai le cerveau en compote et j'en peux plus.

    Donc si quelqu'un trouve la solution, merci d'avance.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Parse error: syntax error, unexpected '}' in C:\Users\UTILISATEUR\Documents\wamp\www\AptanaWorkspace\DVP\test.php on line 87
    Le dernier } est en trop !

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    Merci pour répondre

    Bien vu, mais non.

    J'ai oublié de la supprimer en supprimant des bout de codes pour l'exemple.

    Si j'avais une PARSE ERROR ça ne fonctionnerait avec aucun navigateur.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Dans le test rapide que j'ai fait, la table se charge et s'affiche bien. Si je clique sur le gros bouton, idem.

    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
    function getPshopActivity( order, fold, file ){
    	file = file || "";
    	fold = fold || "";
     
    	var jqXHR = $.post( "test.php", {
    		"func" :"pshopactivity",
    		"ajax" :"ajax",
    		"order" : order,
    		"file" : file,
    		"fold" : fold
    	}, "html" );
     
    	jqXHR.done( function( data, textStatus, jqXHR ){
    		// succès de la transaction, on doit traiter le contenu de data
    		console.log( data, textStatus, jqXHR );
     
    		$( "article:first" ).html( data );
    	});
     
    	jqXHR.fail( function( jqXHR, textStatus, errorThrown ){
    		// échec de la transaction, gérer la catastrophe
    		console.log( jqXHR, textStatus, errorThrown );
     
    	});
     
    	jqXHR.always( function( jqXHR, textStatus ){
    		// la transaction est terminée
    		console.log( jqXHR, textStatus );
    	});
     
     
    	return false;
    }

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    Sous Firefox ?

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    18 oui !

    200 OK 3.5s
    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
     
    	<table width="95%" cellpadding="5" cellspacing="0" border="1" align="center">
    	<tr>
    	<td colspan="3" class="titre2" align="center">Photoshop en el servidor</td>
    	</tr>
    	<tr>
    	<td colspan="3" class="titre2" align="center">Estado actual: Apagado</td>
    	</tr>
     
    			<tr>
    			<td colspan="3">
    			<strong>Pendientes:</strong>
    			</td>
    			</tr>
    			<tr>
    			<td colspan="3">
    			<strong>Ejecutando:</strong>
    			</td>
    			</tr>
    			<tr>
    			<td colspan="3">
    			<strong>Hechos:</strong>
    			</td>
    			</tr>
    	<tr>
    	<td colspan="3" align="center">
    	<input type="button" value="Ejecutar todos los scripts pendientes" onclick="getPshopActivity('exec','','Automator');"  />
    	</td>
    	</tr>
    	</table>
    Après clic sur le grand bouton, la réponse du serveur est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <table width="95%" cellpadding="5" cellspacing="0" border="1" align="center">
    	<tr>
    	<td colspan="3" class="titre2" align="center">Photoshop en el servidor</td>
    	</tr>
    	<tr>
    	<td colspan="3" class="titre2" align="center">Estado actual: Apagado</td>
    	</tr>
     
    	<tr>
    	<td colspan="3" align="center">
    	<input type="button" value="Ejecutar todos los scripts pendientes" onclick="getPshopActivity('exec','','Automator');"  />
    	</td>
    	</tr>
    	</table>
    J'utilise :

    Server Apache/2.2.22 (Win64) PHP/5.4.3
    X-Powered-By PHP/5.4.3

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  7. #7
    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 : 54
    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
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Access-Control-Allow-Origin: http://MonUrl');
    A quoi te sert cette ligne ?
    Parce que si tu fais une requête cross-domain, c'est pas dans le script PHP qu'il faut l'autoriser...
    Si le serveur n'accepte pas l'origine, la requête n'atteindra jamais le script supposé l'autoriser...
    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

  8. #8
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    En fait j'ai fini par le remplacer par ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Access-Control-Allow-Origin: *');
    Et avec ou sans même problème.

    Pour être plus précis sur la configuration et le but de la manoeuvre:

    - Pas de Cross-Domain.
    - Le script est appelée avec la même url que la page.
    - Le fichier index.php se charge de vérifier si il s'agit d'une requête ajax ( $_POST['ajax'] ) et si l'utilisateur est autorisé.
    - si oui il inclut le script qui génère le tableau et seulement celui-ci (pas de header ni footer ou autre bout de code inutile).
    - le serveur renvoi la réponse générée en fonction des paramètres de la requête ( $_POST['func'],... ).

    Le problême est que la réponse semble ne pas plaire au Renard et lui met le feu au c...

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    la réponse ? oui mais ou ??
    la reponse d'ajax ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    Oui

    1) La page se charge, elle est vide.
    2) La fonction getPshopActivity(order,fold,file); envoi la requête au serveur une fois le DOM chargé $(document).ready();
    3) À la réception de la réponse celle-ci est placé dans une div et un setTimeout renvoi la requête 5 secondes après.

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ben le header de retour ne doit clairement pas etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Content-Type	application/x-www-form-urlencoded; charset=UTF-8
    quelle est le type du retour ? du code html ? du javascript ? du text plain ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. ajax pas de réponse coté serveur
    Par live-linux dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 15/06/2010, 09h02
  2. Réponses: 7
    Dernier message: 13/08/2009, 09h19
  3. Client ne reçoit pas les réponses du serveur
    Par Joccy dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 04/10/2007, 15h16
  4. Serveur Client : pas de réponse !
    Par Canopus dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 20/06/2007, 15h02
  5. Réponses: 7
    Dernier message: 25/08/2006, 14h15

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