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 :

[AJAX] Conflit dans requête Ajax mais problème d'origine Javascript ou Ajax?


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 92
    Points : 116
    Points
    116
    Par défaut [AJAX] Conflit dans requête Ajax mais problème d'origine Javascript ou Ajax?
    Hello!

    Alors voilà mon souci:

    1 - J'ai une page où se trouve un formulaire qui lui, est à l'intérieur d'un <div>
    2 - Une fois validé, le formulaire est envoyé via AJAX - son but est de traité l'information et de mettre à jour le <div>
    3 - Pour l'enregistrement des infos, une page settings.php est appelée
    4 - settings.php traite les infos et renvoi le même formulaire dans le <div> du premier formulaire

    ... Jusque là, tout va bien...

    5 - Ca plante!! Et plus intéressant encore, si j'enlève <form method="post" onSubmit="javascript: ajax(...)">, la page se charge.. Mais sans pouvoir éditer le formulaire bien sûr... duhhhh...


    formulaire.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
    <html>
    <head>
    <title>MonForm</title>
    ### Rel ton code ajax
    ### Rel ton code javascript
    </head>
    <body>
    <div id="max"> ### div modifié par Ajax
    <form method="post" onSubmit="var poststring=createstring(); javascript: ajax('datas.php', 'max', 'POST', 'poststring')">
    <input type="text" name="sample" id="sample">
    <input type="submit">
    </form>
    <script type="text/javascript">
     
    function createstring(){
    var sample = document.getElementById('sample').value
    var poststr = 'sample=' + encodeURI(sample);
    return poststring
    }
     
    </script>
    </div>
    settings.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
    ### Traitement des données
    ### Enregistrement SQL
    ### Données récupérées par SQL
     
    mysql_close();
     
    if($valide == "oui") ### exemple pour l'affichage du formulaire
    {
     
    ?>
     
    <html>
    <head>
    <title>Mon2eForm</title>
    ### Rel ton code ajax
    ### Rel ton code javascript
    </head>
    <body>
     
    <form method="post" onSubmit="var poststring=createstring(); javascript: ajax('datas.php', 'max', 'POST', 'poststring')">
    <input type="text" name="sample" id="sample" value="<?php echo"$ma_valeur"; ?>">
    <input type="submit">
    </form>
    <script type="text/javascript">
     
    function createstring(){
    var sample = document.getElementById('sample').value
    var poststr = 'sample=' + encodeURI(sample);
    return poststring
    }
     
    </script>
     
    <?php
     
    }
    Alors il me dit que createstring(); n'a pas de propriété et il plante... Prob javascript? Une idée?


    Merci d'avance!

    ~W~

    Configuration: Windows
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class certified{
       private $CV;
       public function __construct($CV){
          $this->CV="W3 Excellence";   
       }
       public function certification(){
          echo $this->CV . " Javascript, PHP, CSS, MySQL";
       }
    }
    $wenijah = new certified();

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 92
    Points : 116
    Points
    116
    Par défaut
    allez, un peu de nerf J'ai actualiser le post pour que vous puissiez imaginez comment se présente le script.......
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class certified{
       private $CV;
       public function __construct($CV){
          $this->CV="W3 Excellence";   
       }
       public function certification(){
          echo $this->CV . " Javascript, PHP, CSS, MySQL";
       }
    }
    $wenijah = new certified();

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Points : 127
    Points
    127
    Par défaut
    Salut,
    plusieurs choses me viennent à l'esprit en voyant ton post:

    - Pourquoi renvoyer tout le formulaire et pas seulement la valeur du champs ?
    Il est assez (totalement ?) inutile de renvoyer tout le code HTML du formulaire et en plus celui de la fonction "createstring".

    - Pourquoi ta fonction javascript n'est-elle pas en entete de page ? Je ne vois rien qui puisse l'empêcher d'y être, vu qu'elle est appelée par l'action de l'utilisateur.

    - Tu devrais regrouper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var poststring=createstring(); javascript: ajax('datas.php', 'max', 'POST', 'poststring')
    (le code du onsubmit) dans une même fonction.
    Là aussi, rien n'empêche de mettre tout ça en entete de page, vu que c'est l'action d'un utilisateur qui déclenche le code.

    - Tu devrais aussi poster le code de ta fonction ajax, pour voir.
    - Qu'entends-tu par "ça plante". Ca peut vouloir dire beaucoup de choses.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 92
    Points : 116
    Points
    116
    Par défaut
    Salut! Merci pour ta réponse!

    J'ai découvert un bug...


    [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://localhost/img/js/ajax.js :: loadpage :: line 43" data: no]

    Un indice?

    Voilà :

    - Pourquoi renvoyer tout le formulaire et pas seulement la valeur du champs ?
    Il est assez (totalement ?) inutile de renvoyer tout le code HTML du formulaire et en plus celui de la fonction "createstring".

    >> Ahah bonne question... En fait, je n'avais pas prévu de créer le formulaire en Ajax et donc j'ai une page php avec un <div> et le formulaire et enfin le <div> se remplace quand on valide le formulaire.. Mais ça ne devrait pas poser de prob, no?

    - Pourquoi ta fonction javascript n'est-elle pas en entete de page ? Je ne vois rien qui puisse l'empêcher d'y être, vu qu'elle est appelée par l'action de l'utilisateur.

    >> je vais updater.. A la base, je n'arrivais pas à mettre à jour le var poststr et donc, en plaçant la balise après le formulaire, j'avais toutes les données initiales... Je croyais que ça fonctionnait mais en fait ça n'envoyait que les données initiales et non pas les mises à jour.. enfin, prob régler, je vais updater.

    - Tu devrais aussi poster le code de ta fonction ajax, pour voir.

    Fonction Ajax

    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
    var loadedobjects=""
    var rootdomain="http://"+window.location.hostname
     
    function ajaxpage(url, containerid, tp, poststr){
    var page_request = false
    if (window.XMLHttpRequest) // if Mozilla, Safari etc
    page_request = new XMLHttpRequest()
    else if (window.ActiveXObject){ // if IE
    try {
    page_request = new ActiveXObject("Msxml2.XMLHTTP")
    } 
    catch (e){
    try{
    page_request = new ActiveXObject("Microsoft.XMLHTTP")
    }
    catch (e){}
    }
    }
    else
    return false
    document.getElementById(containerid).innerHTML='<img src="$info_img/ld.gif">'
    page_request.onreadystatechange=function(){
    loadpage(page_request, containerid)
    }
     
    page_request.open('POST', url, true);
    page_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    page_request.setRequestHeader("Content-length", poststr.length);
    page_request.setRequestHeader("Connection", "close");
    page_request.send(poststr);
     
    }
     
    function loadpage(page_request, containerid){
    if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
    document.getElementById(containerid).innerHTML=page_request.responseText
    }
    }
    - Qu'entends-tu par "ça plante". Ca peut vouloir dire beaucoup de choses.

    >> Quand je dis "ça plante", c'est que la page charge mais rien ne s'affiche... Avec FireBug, j'ai découvert une erreur javascript : createstring(); has no properties... Mais même en retournant le code, ça passe pas!...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class certified{
       private $CV;
       public function __construct($CV){
          $this->CV="W3 Excellence";   
       }
       public function certification(){
          echo $this->CV . " Javascript, PHP, CSS, MySQL";
       }
    }
    $wenijah = new certified();

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 92
    Points : 116
    Points
    116
    Par défaut
    J'ai nettoyé mon code, replacer mes js et le formulaire se soumet proprement!

    Merci beaucoup pour les précieux conseils! =)
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class certified{
       private $CV;
       public function __construct($CV){
          $this->CV="W3 Excellence";   
       }
       public function certification(){
          echo $this->CV . " Javascript, PHP, CSS, MySQL";
       }
    }
    $wenijah = new certified();

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

Discussions similaires

  1. [AJAX] $.ajax ne retourne rien dans l'application mais marche sur la console
    Par sipatsymasaka dans le forum jQuery
    Réponses: 7
    Dernier message: 13/04/2016, 08h35
  2. [AJAX] Retour d'un json dans Ajax d'une requête Mysql
    Par laplumedoie dans le forum AJAX
    Réponses: 11
    Dernier message: 16/03/2013, 09h15
  3. Conflits dans AJAX ControlToolKit
    Par The eye dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 20/07/2009, 09h08
  4. [Prototype] Problème dans requête ajax
    Par tibo894 dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 27/05/2009, 14h54
  5. Réponses: 7
    Dernier message: 13/01/2009, 17h11

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