Ajax et la récupération de data après traitement

Répondre
iviewclear
le 08/01/2011 à 15:14
iviewclear
Bonjour à tous

Bon j'ai un formulaire d'identification simple avec 2 input dont voici le code
<form id="formconnexion" method="post" action="page2.php">
<div class="server-info" id="resultat">Connectez-vous !</div>
<div class="server-info">identifiant&nbsp;
<input type="text" name="login" id="login2" style="font-size: smaller; width: 70px;" value=""/></div>
<div class="server-info">Mot de passe&nbsp;
<input type="password" name="pass" id="password2" style="font-size: smaller; width: 70px;" value=""/>
<!--<input type="submit" name="connexion" value="Connexion" onchange="go()"/>-->
<input type="button" name="connexion" value="Connexion" onclick="go()"/>
</div>
<a href="#" class="button red" title="Logout">
<span class="smaller">LOGOUT</span></a>
</form>


Je souhaite envoyer ces info dans un fichier PHP pour traitement afin qu'ensuite je puisse récupérer un morceau de texte à afficher quelque part dans un DIV 'resultat' en foncion du résultat du traitement.
Je me sers donc d'AJAX !!!
et j'ai cela comme fonctions js :
<script type="text/javascript">

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 go(){
var xhr = getXMLHttpRequest(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ txtAafficher = xhr.responseText; document.getElementById('resultat').innerHTML = txtAafficher;
alert(txtAafficher);
}
else { alert('There was a problem with the request.');
}
}
xhr.open("POST","page.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

var argLogin = encodeURIComponent(document.getElementById('login2').value);
var argPass = encodeURIComponent(document.getElementById('password2').value);
var data = "login=" + argLogin + "&pwd" + argPass;
xhr.send(data);
}
</script>


Et pour le PHP, je fais cela :
<?php

header("Content-Type: text/plain");

$login = $_POST['login'];
$pass = $_POST['pass'];
// je teste si le fomulaire à été envoyé
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login']))
&& (isset($_POST['pass']) && !empty($_POST['pass']))){

// connexion à la base
$base = mysql_connect('localhost','root','');
mysql_select_db('base', $base);
// construction de la requete
/*$sql = 'SELECT count(*)
FROM membre
WHERE login="'.$login.'"
AND pass_md5="'.$pass.'"'; */

$sql = 'SELECT count(*)
FROM membre
WHERE login="'.$_POST['login'].'"
AND pass_md5="'.$_POST['pass'].'"';

$requete = mysql_query($sql) or die('erreur !!!'.$sql.'<br>'.mysql_error());
$resultat = mysql_fetch_array($requete);

if(mysql_num_rows($resultat) == 1){
echo "Bonjour " . $login ;
}
else {
echo "Inscrivez-vous !!";
}
}
else {
echo = 'Au moins 1 champ vide';
}
}
?>


Mon souci actuel :
Je passe 3 fois dans mon test alert('There was a problem with the request.'); c'est à dire que 3 fenêtres d'alerte s'affichent
Est-ce un souci PHP dans mon traitement ou autre chose ??

Il est à noter que dans je passe par un PHP simple comme celui_ci cela marche j'ai bien un retour

<?php

header("Content-Type: text/plain");

$login = (isset($_POST["login"])) ? $_POST["login"] : NULL;
$pass = (isset($_POST["pass"])) ? $_POST["pass"] : NULL;

if ($login && $pass) {
echo "Bonjour " . $login ;
} else {
echo "FAIL";
}
?>

Vous auriez une petite idée à me soumettre s il vous plait mesdames et messieurs

Merci à vous
Iviewclear
LupusMic
le 12/03/2011 à 07:33
LupusMic
Pour ceux qui passeraient après toi, pourrais-tu indiquer la solution à ton problème ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours