Archives du forum Ajax

Questions diverses dans le forum Ajax, archivé sous forme de pages HTML statiques.

Forum

Tutoriel ajax de xul.fr

14-06-2007 17:08:00

supertoto

Bonjour à tous, Je débute en Ajax et j'ai voulu tester le tutoriel mis en ligne sur votre site : https://www.xul.fr/xml-ajax.html Néanmoins quand je tente de le faire fonctionner en local sur mon pc à partir des sources fournies, ça ne fonctionne pas. Le message écrit est le suivant : Error : returned status code 0 Voyez-vous de quoi cela peut provenir ? Merci d'avance.
16-06-2007 00:37:54

laruiss

L'objet XMLHttpRequest ne fonctionne qu'avec un serveur web, avez-vous un serveur installé sur votre machine de développement ?
16-06-2007 15:52:34

supertoto

Bonjour Laruiss, Effectivement ça marche mieux avec un serveur web. Merci pour l'info, c'est réglé.

Comment faire une boucle XMLHttpRequest qui marche ?

18-01-2007 15:40:18

lancelot

Bonjour! Voici un problème que je n'arrive pas à résoudre. Merci à celui qui a déja rencontré ce type de problème de me venir en aide! Afin de diviser le traitement coté serveur je voudrais envoyer plusieurs appels XMLHttpRequest qui me retournent une valeur de controle. Ces valeurs sont aussi utilisées comme décompte pour signaler la progression au client. J'ai simplifié le code pour en montrer le principe. Ce qui se passe malheureusement, c'est que ce code n'affiche que le décompte final (0) et non les décomptes intermédiaires (5 puis 4, 3, 2, 1...). L'intruction Sleep est là pour ralentir le processus durant les tests : on devrait donc voir s'afficher un décompte de 5 à 0, de seconde en seconde. Pourquoi développer ce code ? Le but est d'écrire un code permettant de partitionner les processus coté serveur pour éviter les charges excessives et les timeout. Cette approche permettrait par exemple de manipuler des dizaines de milliers de contacts d'une table SQL en plusieurs fois, en retournant une notification de progression ( "nombre fiches traitées : 4300. Temps restant : 5 minutes"). --------------------------------------------------------- La page XHR1.php contient le formulaire de requete La page XHR2.php traite le formulaire coté serveur --------------------------------------------------------- Code de la page d'envoi ( XHR1.php)
<head><script language="javascript">

function request(f) {
var method   = "POST";
var filename = "XHR2.php";


var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
    xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // not supporting
    alert("Error");
    return;
}

var countdown  = f.elements["countdown"].value;
var data = "countdown=" + countdown;

xhr_object.onreadystatechange = function () {
    if(xhr_object.readyState == 4) {
        var tmp = xhr_object.responseText;
        // alert ( tmp );
        f.elements["countdown"].value = tmp;
        if ( countdown > 0 ) request(f);
    }
}
xhr_object.open(method, filename, false);
xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr_object.send(data);
xhr_object.abort();
}
</script>
</head>
<body>
    <FORM onsubmit="return false;" action="">
<INPUT id=countdown size=5 name=countdown>
<BR>
<INPUT onclick=request(this.form) type=button value="TEST"> 
</FORM>
</body>
----------------------------------------------- CODE PAGE TRAITEMENT ( XHR2.php)
<?php
header('Content-type: text/html; charset=iso-8859-1');

if(isset($_POST["countdown"])) {
    sleep (1);
    $countdown = $_POST["countdown"];
    if ( $countdown > 0 ) {
        // FAIRE LONG DB / FILE PROCESSING
        // ICI
        // PUIS AJUSTE DECOMPTE
        $somedelay = 1; // 1 comme valeur test
        $countdown = $countdown - $somedelay;
    }
    echo $countdown;
}
?>
19-01-2007 14:56:56

webmaster

Si je comprend bien votre programme, il s'agit d'une fonction récursive qui appelle la fonction déclarant l'objet XHR dans la fonction assignée à l'évènement onReadyStateChange. En fait je ne vois pas trop comment cela peut fonctionner puisque au départ, il faudrait un changement d'état alors que l'objet XHR n'existe pas encore. L'utilisation d'un script comme paramètre de la fonction open me semble aussi hasardeux. La question de l'interactivité pour un script Ajax a été traitée dans l'article Séquence de requêtes GET et POST.

Je n'avance plus avec Ajax

15-11-2007 18:17:19

edmond84

Bonjour tout le monde, je m exerce actuellement en ajax et je suis arrive a un point où je n avance plus. voici d abord les fichiers. login.php
<form action="#" method="post"  name = "loginForm">
	 <label>Username:</label>
	 <input type = "text" name="username">
	 <br>
	 <label>Passwort:</label>
	 <input type = "password" name="pass">
	 <br><br>
	 <input class="submit" style="float:right;margin-right:72px" type="button" name="logSubmit" value="Login" onClick = "login()"> 
	 </form>
le username et le mot de passe doivent etre envoye par la fonction login() du fichier ajax1.js à la fonction login($username) du fichier ajax1.php. voici le code du fichier ajax1.js
function login()
{
	http[0] = httprequest();
	http[0].open("POST","ajax1.php?action=login",true);
	http[0].setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	http[0].onreadystatechange = analLogin;
	http[0].send("username="+document.loginForm.username.value);
}
et voici la fonction login($username) du fichier ajax1.php
function login($username)
{   
	global $createSess;
	if (isUsernameOk($username))
	{
		$tempArray = Array();
		$tempArray["name"] = $username;
		$tempArray["mode"] = "+u";
		$tempArray["id"] = getLastMsgId();
		$randMD5 = md5(rand(0,100000000000));
		$createSess("users/$randMD5.txt",$tempArray);
		setcookie("sess_id",$randMD5);
		echo utf8_encode("<Data><LoginOk>True</LoginOk><Message>Vous êtes connecté avec succès.</Message></Data>");
	}
	else
	{
		echo utf8_encode("<Data><LoginOk>False</LoginOk><Message>Nom d'utilisateur invalide ou mauvais.</Message></Data>");
	}
}
Au fait comme je l ai mentione au debut je veux envoyer le username et le password mais pour verifier aussi dan s la fonctio login si l password est bon. Mais quand je fais le code suivant ca ne charge plus la page et la page se fige.
http[0].send("username="+document.loginForm.username.value+"&pass="+document.loginForm.username.value);
et puis login($username, $password) pour la fonction login($username) Merci pour toute aide. edmond
19-11-2007 17:58:28

webmaster

Comment sont récupérées les variables, directement dans $username? Pour être sûr que cela fonctionne, on utilise cette méthode:
if (isset( $_POST ))
		$posted = &$_POST ;			
	else
		$posted = &$HTTP_POST_VARS ;	

	$username =  $posted["username"];
	$password = $posted["pass"];
A moins encore d'utiliser les sessions.

Référencement d'un site fait avec ajax

14-04-2008 14:47:24

ghamlb

Bonjour, j'ai un souci au niveau de referencement de mon site qui est deja developpé en html et ajax, je voudrais savoir si j'appelle ma methode de cette facon mon tous les href sont referenciés :
<td><img id="nousbtn" src="Boutons/nous-base.gif" alt="" height="32" width="148" 		
      onclick="ajaxpage('transition_eeeorange.html', 'corps');selectButton(document.getElementById('nousbtn'), 'Boutons/nous-down.gif');showMenu(document.getElementById('menunous'))" 
      onmouseover="overButton(document.getElementById('nousbtn'), 'Boutons/nous-over.gif')" 
      onmouseout="deselectButton(document.getElementById('nousbtn'))" />
</td>
Merci d'avance
16-04-2008 16:09:28

webmaster

Bonjour Au niveau des liens on utilise href à destination des moteurs, tandis que l'évènement onclick agira pour les visiteurs. Pour le contenu ajouté dynamiquement, il ne sera par référencé. La solution est d'utiliser responseHTML.

Ne pas recharger toute la page, seulement un panier volant?

03-05-2009 16:28:12

affreuxzozo

Bonjour, J'ai sur toute mes pages de mon site un panier volant qui sort du bord droite de ma page. Lorsque je clique pour mettre un élément dans le panier j'aimerais qu'il soit directement dans mon panier volant sans recharger la page principal. Je ne sais pas du tout comment faire. J'aimerais aussi que lorsque je suis sur mon panier volant je puisse supprimer un élément du panier sans recharger la page sur laquelle je suis. J'espère avoir été clair. J'inclus ce panier dans toute mes pages. Mais j'aimerais rafraichir uniquement le div contenant le panier et faire les actions dont je parle précédemment. Merci, d'avance a ceux qui me répondrons
04-05-2009 20:35:40

webmaster

Apparemment cela devrait pouvoir se faire en HTML dynamique et plus précisemment avec Ajax... Voir le Tutoriel Ajax

Simulation de police

19-05-2009 11:03:51

acte

Bonjour, est il possible de creer un simulateur de police en ajax? Je tape mon texte, choisi ma police = aperçu du resultat merci
19-05-2009 20:18:58

webmaster

Oui, notamment en utilisant Canvas. On commande ce qui est affiché dans Canvas avec du JavaScript, donc on peut faire une liste déroulante ou autre widget associé avec un objet de formulaire. Sans Canvas il faut créer son propre widget. L'éditeur en ligne Tiny MCE propose un tel widget pour afficher les polices dans des tailles différentes. On devrait pouvoir extrapoler pour afficher aussi des polices différentes...
© 2007-2013 Xul.fr