Page 1 sur 1

Début laborieux avec $.post

Posté : 04 mai 2010, 12:19
par albius
Bonjour,

M'exerçant à jquery, je cherche à traiter des données par ajax. L'utilisateur clique sur un bouton et déclenche un traitement de données dans un fichier php qui sera appelé via jquery, et qui renverra à sont tour tel ou tel message en fonction du succès des requêtes:

Code : Tout sélectionner

$(document).ready(function(){ $("#myForm").submit(function(){ $("#loader").show(); $.post("transfertCompta.php", function(data){ $("#loader").hide(); if(data != "ok"){ $("#content").empty().append("ca marche pas"); } else{ $("#content").empty().append("la requête a bien marché"); } }); return false; }); });
//Le code html
<div id="content">
            <p class="warning" align="center">Transférer le bon en comptabilité ?</p>
            <form id="myForm" name="myForm" method="post" action="#">
...
                            <div align="right">
                                <input name="btnOk" type="submit" class="btnAlert" id="btnOk" value="Ok"/>
                            </div>
...
</form>
    </div>
        <div id="loader" align="center" style="display:none"><img src="../../../../img/ajax-loader.gif" alt="Loading" /></div>
Le code php maintenant:
if(isset($_POST['btnOk'])) {
    //Duplicata des données
    $insert= 'INSERT INTO compta (nBonCom, designation, quantite, section, idUser)
        SELECT nBonCom, designation, quantite, section, idUser 
        FROM boncommandes AS b
        WHERE b.`nBonCom` = "'.$_SESSION['nBonCom'].'"';
    $requete= mysql_query($insert) or die ('Erreur SQL'.$insert.'<br>'.mysql_error());
	
//    Si la requête a été opérationnelle
    if($requete != 0){
//        on efface le contenu de la table 'boncommandes'
        $delete= 'DELETE FROM boncommandes
            WHERE `nBonCom`= "'.$_SESSION['nBonCom'].'"';
        $requete1= mysql_query($delete) or die ('Erreur SQL'.$delete.'<br>'.mysql_error());
    }
	
    //
    if($requete1 !=0) {
        echo 'ok';
    }
    else {
        echo 'not ok';
    }
}
Après plusieurs test, ce que j'ai pu observer (et pour le moins étrange!), c'est que $_POST['btnOk'] n'est pas pris en compte dans le fichier php et de ce fait les requêtes ne s'effectuent pas. Si maintenant, je retire cette condition, les requêtes peuvent s'exécuter normalement ! (???)
Autre chose encore, le message de retour : $requête1 n'est pas vide (donc bonne), mais le script jquery considère que data est différent de ok, et affiche donc que cela ne marche pas, alors que c'est bien le contraire...
Merci de bien vouloir éclairer mes lanternes...

Re: Début laborieux avec $.post

Posté : 04 mai 2010, 13:07
par macgawel
Bonjour.

Commence par tester tes variables.
1. Que contient le $_POST ? Tu peux l'afficher avec print_r($_POST).
2. Que contient le data (dans ton JS) ? Tu peux l'afficher dans le JS en faisant $("#content").empty().append(data);

Re: Début laborieux avec $.post

Posté : 04 mai 2010, 14:28
par albius
Je n'ai rien qui sort de $("#content").empty().append(data). En revanche, si je fais appel du fichier php directement via le formulaire, et que je neutralise le java-script, tout marche correctement. Je n'y comprends rien...