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

JavaScript Discussion :

Mon url ne veut pas s'exécuter via ajax


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut Mon url ne veut pas s'exécuter via ajax
    Bonsoir a tous,

    Je traite des centaines de fonctions ajax, et la je ne comprends pas ou se situe le probleme, a part peut etre la gestion json.


    Je m'explique, j'ai un formulaire avec des checkbox, et une fonction qui permet de selectionner plusieurs et ensuite je clique sur un lien qui declence la fonction envoyer la valeur des checkbox via ajax.

    Mes checkbox :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input type="checkbox" name="choix[]" class="choix" value="toto"></td>
    <input type="checkbox" name="choix[]" class="choix" value="titi"></td>
    <input type="checkbox" name="choix[]" class="choix" value="tata"></td>
    le bouton :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="javascript:;" onclick="relance_sms(\'.choix\',\''ceci est un message de test\'');success();">ceci est un message de test</a>

    la fonction relance_sms est la suivante :
    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
     
    function relance_sms(id_class,sms) {
      var elts = document.querySelectorAll(id_class);
      var i = 0;
      var array_val = []; // array
      elts.forEach(function(id) {
        if (id.checked) {
          array_val[i] = id.value;
          i++;
        }
      });
      var liste_val = (array_val.length > 0) ? JSON.stringify(array_val) : ""; // liste au format JSON
     
    	var xhr_object = null;
    	if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
    	else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    	else {alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
    	xhr_object.open("GET", "relance_sms.php?liste="+liste_val+"&sms="+sms, true);
    	xhr_object.onreadystatechange = function() {if(xhr_object.readyState == 4) {}}
    	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	xhr_object.send(null);
    //	alert ("relance_sms.php?liste="+liste_val+"&sms="+sms);
    }
    Or si je selctionne toto et tata et que je clique sur le lien, je vois bien l'alerte s'afficher :
    relance_sms.php?liste=["toto","tata"]&sms=ceci est un message de test
    en réalité il s'emblerait que la fonction ne l'appelle pas, puisque derriere le fichier relance_sms ne s'execute pas.

    Par contre si je colle l'url : relance_sms.php?liste=["toto","tata"]&sms=ceci est un message de test dans la barre d'url, la le fichier relance_sms s'execute.

    Conclusion, il semblerait que mon code AJAX ne veuille pas executer l'url

    Merci pour toute l'aide que vous pourrez m'apporte. Je precise que j'ai essayé aussi avec POST a la place de GET.

    Bonne soirée.
    Olivier

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Réponse a un post qui a disparu d'une personne voulant m'aider, pensant que j'avais a tort mis un ; entre les fonctions :

    heu je ne suis pas sur ????????
    le ; sert a séparer les fonctions appelées : success() n'a rien a voir avec la fonction relance_sms() !!!
    Mais merci en tout cas de m'aider.

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    Oui après relecture de ton code j'ai volontairement supprimé, car la virgule était bien la entre les échappements j'ai omis cette virgule, et j'ai pensé que tu as un double appel js lors du "trigger" de l'événement. As tu checké les erreurs PHP Apache pour être un peu moins de le brouillard es tu au courant que ta fonction ajax n'est pas compatible cross browser et je te conseil vivement si tu peux l'utilisation de jquery pour ne pas être embêté par cette problématique, si tu souhaite que tout le monde puisque profiter de ton site.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Merci pour ces précisions concernant le cross browser .. on en apprend tous les jours, c'est pour ça que les échanges sont si précieux.

    En fait je tourne sur Chrome, Safari et Firefox, et tous mes scripts fonctionnent.

    C'est une apply qui n'est utilisée que par moi, donc j'ai le temps de la rendre compatible eventuellement par la suite, c'est pourquoi je tiens compte de ton avis éclairé

    Par contre je ne peux verifier mon code PHP que si je mets l'URL de l'alerte dans la barre d'URL du navigateur, et la tout fonctionne.

    Mais cela ne semble pas fonctionner a partir de la fonction javascript.

    Merci encore de ton aide.

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    N'ayant pas accès a cette fameuse page PHP je ne peux pas trop me prononcer, par contre si il y a une alert lors de l'appel de la page via URL surement il y a un $_GET quelque part qui est la pour filtrer le passage de paramètre entre la page html et le script PHP côté serveur.

    Un petit essai :
    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
    function relance_sms(id_class,sms) {
      var elts = document.querySelectorAll(id_class);
      var i = 0;
      var array_val = []; // array
      elts.forEach(function(id) {
        if (id.checked) {
          array_val[i] = id.value;
          i++;
        }
      });
      var liste_val = (array_val.length > 0) ? JSON.stringify(array_val) : ""; // liste au format JSON
     
    	var xhr_object = null;
    	if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
    	else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    	else {alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
    	xhr_object.open("GET", "relance_sms.php?liste="+liste_val+"&sms="+sms, true);
    	xhr_object.onreadystatechange = function() {if(xhr_object.readyState == 4) {
                alert ("relance_sms.php?liste="+liste_val+"&sms="+sms);
            }}
    	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	xhr_object.send(null);
    }

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    L'alerte se fait parfaitement

    Voici mon code 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
    <?php
    session_start();
    require ('conx.php');
    require ('session.php');
     
    header('Content-Type: application/json');
    $sms = @$_GET["sms"];  
    $liste=json_decode(@$_GET['liste']);
    foreach ($liste as $key => $value) 
    {
    	$client=$liste[$key];
    	$modif=mysql_query("INSERT INTO `".$suff_table."journal` (idUT, idCLIENT, date, statut, commentaire) VALUES ('$MB_idUT', '$client', '$date_con', 'Relance SMS', '$sms')");
     
    }

    Mais si le code PHP fonctionne en mettant l'url obtenue dans l'alerte dans la barre de navigation, c'est que le PHP fonctionne, donc pourquoi l'ajax le bloque ?????

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/08/2010, 17h50
  2. Mon panel ne veut pas se mettre en Visible=true
    Par yonialhadeff dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 07/06/2007, 11h14
  3. Mon JScrollPane ne veut pas de mon JPanel
    Par Lady dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/03/2007, 16h01
  4. mon "insert" ne veut pas marcher !!
    Par harlock59 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 02/01/2006, 13h17
  5. Mon ordinateur ne veut pas demarrer.
    Par JavaAcro dans le forum Ordinateurs
    Réponses: 11
    Dernier message: 17/12/2005, 11h40

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