[Javascript] Valeur d'un div dans un input...

johnburgi -  
gaerebut Messages postés 1060 Statut Membre -
Bonjour à tous,

Sur mon site internet, <div id="timediv"></div> permet d afficher en AJAX la ville du dernier internaute et s actualise toutes les 5 secondes. Je souhaiterais afficher cette info comme valeur d'un input text.

Exemple:
<input type="text" name="aaa" id="aaa" value="VALEUR_DE_LA_DIV" onfocus="this.value='';/>

J'ai essayé value="this.value=document.getelementbyid('timediv').innerHTML" mais ça ne fonctionne pas/

Quelqu'un peut-il m'aider svp.
Merci

3 réponses

gaerebut Messages postés 1060 Statut Membre 171
 
Salut,

déjà tu as une faute, sur le onfocus ou tu ne referme pas le guillement ! lol

Ensuite, on ne peut pas appeller du JS dans value, donc tu doit trouver un autre moyen
Par exemple, le plus proprement possible serait d'afficher le texte dans le input lorsque ta fonction ajax à reçu la réponse du serveur. Donc au moment ou tu affiche la réponse dans le div, tu affiche également la réponse dans le input !

document.getElementById('timediv').value = ajaxResponse;

En espérant t'avoir aidé ! :-)

A+

Gaerebut
0
johnburgi
 
Alors, peux-tu m'en dire plus stp.
Voici le code, il servira à d'autres:

Boo.php
<?php

// Configure connection settings

$db = 'aaaaaaaaaaaaaaa';
$db_admin = 'bbbbbbbbbbbbbb';
$db_password = 'ccccccccccccccccccc';
$tablename = 'dddddddddddddddddddddd';

// Title


// Connect to DB

$sql = mysql_connect("eeeeeeeeeeeeeeee", $db_admin, $db_password)
or die(mysql_error());

mysql_select_db("$db", $sql);

// Fetch the data

$query = "SELECT xxxxxxxxxxxx  FROM `yyyyyyyy` WHERE idsite=11  ORDER BY `idvisit` DESC LIMIT 0,1";
$result = mysql_query($query);

// Return the results, loop through them and echo

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "{$row['location_geoip_city']}";
}

?>



Ajax.js
// Customise those settings

var seconds = 5;
var divid = "timediv";
var url = "boo.php";

////////////////////////////////
//
// Refreshing the DIV
//
////////////////////////////////

function refreshdiv(){

// The XMLHttpRequest object

var xmlHttp;
try{
xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
}
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
alert("Your browser does not support AJAX.");
return false;
}
}
}

// Timestamp for preventing IE caching the GET request

fetch_unix_timestamp = function()
{
return parseInt(new Date().getTime().toString().substring(0, 10))
}

var timestamp = fetch_unix_timestamp();
var nocacheurl = url+"?t="+timestamp;

// The code...

xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
document.getElementById(divid).innerHTML=xmlHttp.responseText;



setTimeout('refreshdiv()',seconds*1000);
}
}
xmlHttp.open("GET",nocacheurl,true);
xmlHttp.send(null);
}

// Start the refreshing process

var seconds;
window.onload = function startrefresh(){
setTimeout('refreshdiv()',seconds*1000);
}



Ma page
<script src="ajax.js"></script>
<script type="text/javascript"><!--
refreshdiv();
// --></script>
<div id="timediv"></div>
0
gaerebut Messages postés 1060 Statut Membre 171
 
Re,

ok c'est simple, tu as juste à ajouter une ligne ici:

xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
document.getElementById(divid).innerHTML=xmlHttp.responseText;
setTimeout('refreshdiv()',seconds*1000);
}


Donc ça devient ça:

xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
document.getElementById(divid).innerHTML=xmlHttp.responseText;
document.getElementById('aaa').value=xmlHttp.responseText; // Nouvelle ligne
setTimeout('refreshdiv()',seconds*1000);
}


Bien sûr, tu dois ajouter un champs input ayant l'ID 'aaa' !

Voila !

Bien à toi,

Gaerebut
0