11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je fais appeler a vous carre je commence a avoir la cervelle en Smiley biggol .

Voici mon code
function processXml(responseXML){ 
    var message = $('message', responseXML).text(); 
    alert(message); 
};

$(document).ready(function(){
        
    $("#type_inscription .participant").click(function() { 
        $("#type_inscription").slideUp("slow", function(){$("#form_maxi").show("slow");} );
    });    

    $('#form_inscription').ajaxForm({
        success: processXml,
        error: function(){alert("erreur")},
        dataType: 'xml',
        }); 
});


Et en faite tout simplement, Firefox execute "success", IE et chrome "error" ...
Mais pourquoi ?
Et comment remedier a ca ..

J'utilise la derniere version de jquery (1.3.2).

Si sa peux aider voici ma page appeler.

<?php
header('Content-type: text/xml');
require("bdd.php");
if (empty($_POST))
    echo ("<root><message>rien dans le POST</message></root>");
else{
    $email = (isset($_POST['email']) && !empty($_POST['email']))?mysql_real_escape_string($_POST['email']):"erreur";
    $psswrd = (isset($_POST['psswrd']) && !empty($_POST['psswrd']))?mysql_real_escape_string($_POST['psswrd']):"erreur";
    $pseudo = (isset($_POST['pseudo']) && !empty($_POST['pseudo']))?mysql_real_escape_string($_POST['pseudo']):"erreur";
    
    $civ = (isset($_POST['civ']))?mysql_real_escape_string($_POST['civ']):"";
    $prenom = (isset($_POST['prenom']))?mysql_real_escape_string($_POST['prenom']):"";
    $nom = (isset($_POST['nom']))?mysql_real_escape_string($_POST['nom']):"";
    $addr = (isset($_POST['addr']))?mysql_real_escape_string($_POST['addr']):"";
    $cp = (isset($_POST['cp']))?mysql_real_escape_string($_POST['cp']):"";
    $ville = (isset($_POST['ville']))?mysql_real_escape_string($_POST['ville']):"";
    $pays = (isset($_POST['pays']))?mysql_real_escape_string($_POST['pays']):"";
    $tel = (isset($_POST['tel']))?mysql_real_escape_string($_POST['tel']):"";
    $type = (isset($_POST['type']) && $_POST['type'] == 1)?1:0;
    $partenaire = (isset($_POST['partenaire']) && $_POST['partenaire'] == 1)?1:0;

    $retour = mysql_fetch_array(mysql_query("SELECT count(*) FROM `users` WHERE `email`='".$email."'"));
    if ($retour[0] == 0){
        $sql = "INSERT INTO `users` VALUES (NULL, '".$email."', '".md5($psswrd)."', '".$pseudo."', '".$civ."', '".$prenom."', '".$nom."', '".$addr."', '".$cp."', '".$ville."', '".$pays."', '".$tel."', '".$type."', '".$partenaire."' )";
        $retour = mysql_query($sql);
        if ($retour == false)
            echo("aie");
        echo("<root><message>Merci de vous etre inscrit !</message></root>");
    }
    else
        echo("<root><message>deja</message></root>");
}
?>


Merci d'avance !
Modifié par lemulot (03 Jan 2010 - 13:59)
Je me permet de double-poster car je pense avoir cerner le "probleme".

Je viens de refaire des teste en partant de zero.
$(document).ready(function(){
    $("#form_login").ajaxForm({
        type: "POST",
        url: "includes/ajaxlogin.php",
        dataType: 'xml',
        success: function(responseXML){var message = $('message', responseXML).text();alert(message);},
        error: function(responseXML){alert( "ERROR");}
    });
});


et pour le ajaxlogin.php

<?php
header('Content-type: text/xml');
require("bdd.php");
//$bdd_id = mysql_connect("localhost", "root", "root"); 
//mysql_select_db("photoz"); 
if (empty($_POST))
    echo ("<root><message>rien dans le POST</message></root>");
else{
    
        echo("<root><result>success</result><message>Vous etes maintenant loggue</message></root>");
 
}
mysql_close($bdd_id);
?>


Ce code fontionnne sur FF mais pas sur IE/chrome.
en suppriment le "require" (idem avec include), cela fonctionne ...

Donc probleme resolus mais j'aurai bien aimer savoir pourquoi Smiley biggrin
salut

a écrit :
en suppriment le "require" (idem avec include), cela fonctionne ...


si pas de print ou echo dans le fichier bdd, place le require(qui devrait être once mais bon) avant le header. perso, je placerais le header avant chaque echo xml et comme j'imagine que dans bdd.php ce sont les paramètres de connexion, include_once serait idéal.
Merci de ta reponse.

Je viens d'essayer avec
<?php
include_once("bdd.php");
header('Content-type: text/xml');
...


Le probleme est le même.

Dans l'outil de dev de chrome, ressource, xhr
Request URL:http://localhost/photoOZ/includes/ajaxforminscrip.php
Request Method [langue]OST
Status Code:200 OK

Alors, qu'il m'exécute le 'error' d'ajax.

Bon ce n'est pas non plus très grave, car ma façon fonctionne même si lors de la mise en place je devrai changer les identifiants de la bdd dans plusieurs fichier.

Merci beaucoup !
re

a écrit :
Bon ce n'est pas non plus très grave, car ma façon fonctionne


c'est un bug, c'est sur, et tu as tord de l'outrepasser par de la bidouille surtout avec php/ajax et un form de login. mais ce n'est que mon avis Smiley cligne tu es seul maitre à bord.

tu as tester les print_r/var_dump?
Non je n'est pas tester.
Je ne travaille actuellement plus dessus (en tout cas pour l'instant).

Merci énormément quand même !