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 :

[AJAX] Bug header location avec ajax


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Points : 15
    Points
    15
    Par défaut [AJAX] Bug header location avec ajax
    Bonjour,

    Lors de l'appel d'une page PHP via XMLHttpRequest, j'ai besoin de faire une redirection vers une page qui va envoyer des requêtes à une BDD via la fonction header(Location: url) ...
    Mais cette solution ne fonctionne que sur Firefox mais pas sur IE ni sur Safari. Ces derniers chargent bien la page PHP mais ne tiennent pas compte du header....
    J'ai essayé de faire une redirection JS via window.location.href d'après la valeur de responseText mais cette solution ne me convient pas du tout. Il faut absolument que je trouve un moyen de rediriger en php.

    Je vous mets ci-dessous une ébauche de mon code :

    index.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
    function getXMLHttpRequest() {
    	var xhr = null;
     
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
     
    	return xhr;
    }
    function ajax()
    {
     
    	var xhr = getXMLHttpRequest();
    	var temperature = document.formulaire.temperature.value;
    	var ventilation = document.formulaire.ventilation.value;
    	xhr.open("GET", "post.php?temperature="+temperature+"&ventilation="+ventilation, false);
    	xhr.send(null);
    	return xhr.responseText;
        }
    	}
    Un bouton valide le formulaire en appelant la fonction JS ajax qui transmet les infos saisies au fichier post.php que voici :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $temperature=$_GET['temperature'];
    $ventilation=$_GET['ventilation'];
    $commande=$temperature.$ventilation;
    header("Location: http://192.168.x.x/send.htm?remote=daikin&command=$commande");
    ?>



    Avez-vous une idée ? Merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Et pourquoi ta requête ajax ne va-t-elle pas directement vers ta page send. Pourquoi passer par la page post.php ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    Salut,

    Pour 2 bonnes raisons :

    1) Pour ne pas encombrer ma demande, je n'ai pas précisé que ma page post.php effectue au passage une mise à jour d'une BDD avec les valeurs récupérées.
    Tu vas me demander : dans ce cas, pourquoi ne pas faire cette mise à jour dans le fichier send ?
    Car cette page est protégée en écriture ; elle est stockée sur un petit boîtier domotique. Du coup je ne peux pas en faire ce que je veux.

    Pour contourner ce problème il y aurait sans doute moyen de faire 2 requêtes ajax dans mon index.php :
    - Une qui va mettre à jour ma BDD via post.php par exemple.
    - Une seconde qui va appeler le fichier send.htm en suivant

    2) OK ! Mais ça me pose un problème de sécurité : ce formulaire est censé commander une clim à distance, et je souhaite le protéger par un mot de passe. Or si je commence à afficher en clair dans le code le lien du boîtier domotique et la syntaxe des commandes, c'est foutu !

    L'idée que j'avais eu (et qui fonctionne parfaitement avec Firefox), c'était d'appeler la page send cachée par une page php (d'où post.php).

    En tout cas, tu as soulevé une très bonne question !

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je ne crois pas qu'on puisse y changer quelque chose si les navigateurs ne font pas la redirection.

    Pour information, un header "Location" n'est pas plus caché qu'une simple réponse AJAX normale.
    Une solution plus réaliste serait que c'est ton post.php qui doit appeler derrière send.html avec curl... À condition qu'il accepte d'être appelé par autre chose que le navigateur de l'utilisateur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [AJAX] Header php avec Ajax
    Par torrgovin dans le forum AJAX
    Réponses: 1
    Dernier message: 20/08/2013, 15h21
  2. [AJAX] Poster un formulaire avec AJAX
    Par faico dans le forum AJAX
    Réponses: 10
    Dernier message: 22/03/2010, 17h12
  3. [AJAX] Listes déroulantes liées avec Ajax
    Par paupiette dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/08/2006, 16h51
  4. [AJAX] Enchainer plusieurs requêtes avec Ajax
    Par Bobtop dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/08/2006, 08h13
  5. [AJAX] Modifier avec AJAX une image générée avec GD
    Par thsantac dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/03/2006, 19h34

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