11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour

A votre connaissance, une variable de la forme
var data = {a: $('#a').val(), login: login, 	pass: pass	};

avec
var login = $('#login').val();
var pass = $('#pass').val();


peut elle être communiquée à un code PHP ?

Merci DE VOTRE AIDE
Modifié par iviewclear (10 Jan 2011 - 14:39)
Bonjour,

En passant par un formulaire ou en donnant les variables dans l'url de la prochaine page oui (ou encore en ajax). Mais pas autrement, ne pas confondre code script (pas de compilation et exécuté sur le navigateur) et code compilé sur serveur.
Bonjour
J'ai un peu avancé sur mon sujet et voici ce que j'ai fais avec ajax !

j'ai un formulaire d'identification simple
<form id="formconnexion">
                <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()"/>
                </div>
                <a href="#" class="button red" title="Logout">
                    <span class="smaller">LOGOUT</span></a>
            </form>


les données sont envoyées donc par de l'ajax grace à ceci :
<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();
		// On défini ce qu'on va faire quand on aura la réponse
		xhr.onreadystatechange = function(){
			// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
			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.');
			}
		}

		// Ici on va voir comment faire du post
			xhr.open("POST","page.php",true);
		// ne pas oublier ça pour le post
			xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		// POST des arguments
		// ici, le login et le mot de passe
		// Cette forme-là
			var argLogin = encodeURIComponent(document.getElementById('login2').value);
			var argPass = encodeURIComponent(document.getElementById('password2').value);		
			var data = "login=" + arglogin + "&pass" + argPass;
			xhr.send(data);			
	}     
    </script> 


ces données étant récupérées (enfin normalement) je les traite ici dans du php
<?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 . " ! Je vois que votre mot de passe est " . $pass;
	} else {
		echo "FAIL";
	}
?>


Contexte : Je suis sous Chrome
Mon URL de départ est du style localhost/dossierXX/ dans lequel donc réside mon index.php
Après avoir cliqué sur mon bouton de formualaire mon URL devient
localhost/AA_Template-Constellation/php/?login=admin&pass=aaaaa&connexion=Connexion
Donc je ne comprends pas pourquoi ce comportement vu que je suis en POST
Auriez-vous une idée ?

Et mon résultat ne s'affiche pas dans mon div resultat

Auriez-vous une idée ?
Merci d'avance
Modifié par iviewclear (08 Jan 2011 - 13:00)
Bon j'ai fais quelques modifications

Celle-ci :

<input type="button" name="connexion" value="Connexion" onclick="go()"/>


Et celle-ci
<form id="formconnexion" action="page.php" action="POST">


Ce qui a pour effet de ne plus modifier mon URL

Mais maintenant il s'avère au clic sur mon bouton de connexion que je passe 3 fois de suite dans mon test
else { 
alert('There was a problem with the request.'); 
} 


pour finalement afficher dans mon alert la bonne info c'est-à-dire la récupération de la valeur saisie dans mon formulaire

JE SUIS UN PEU PERDU avec ce comportement que je n'arrive pas à expliquer

Quelqu'un meut-il modifier avec ça ? SVP
Merci à vous
Mon souci a été résolu en refaisant tout et tant pis même si je n'ai pas eu l'explication de mon souci
Cela doit être les mystères de l'informatique Smiley smile Smiley smile
Merci