I ont actuellement un procédé dans lequel il y a unefonction Livesearch avec JSON
<input type="text" id="politician" name="politician"
onkeyup="showResult(this.value)" value="Enter a politician's name"/>
tag
. Dans ce même fichier qui inclut la balise d'entrée, il y a un lien vers un fichier javascript externe appelé ajax.js
Le contenu de ce fichier sont les suivantes:
function showResult(str)
{
if (str.length==0)
{
document.getElementById("livesearch").innerHTML="";
document.getElementById("livesearch").style.border="0px";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("livesearch").innerHTML=xmlhttp.responseText;
document.getElementById("livesearch").style.border="1px solid #A5ACB2";
}
}
xmlhttp.open("GET","livesearch.php?politician="+str,true);
xmlhttp.send();
}
Fondamentalement, ce que le fichier javascript fait disons que chaque fois qu'une valeur est insérée dans la zone de texte d'entrée, une requête est envoyée à un fichier php appelé "livesearch.php" qui analyse le contenu d'un document XML codé en dur appelé politicians.xml.
Le fichier livesearch.php est la suivante:
<?php
//Make sure we have something set before we go doing work
if (isset($_GET["politician"])){
$q = $_GET["politician"];
if ($q == "")
exit();
$xmlDoc = new DOMDocument();
$xmlDoc->load("politicians.xml");
$x=$xmlDoc->getElementsByTagName('Politicians');
$hint = "";
for($i=0; $i<($x->length); $i++)
{
$y=$x->item($i)->getElementsByTagName('name');
$z=$x->item($i)->getElementsByTagName('url');
$w=$x->item($i)->getElementsByTagName('location');
$v=$x->item($i)->getElementsByTagName('position');
$u=$x->item($i)->getElementsByTagName('photo');
if($y->item(0)->nodeType==1)
{
//Find a link matching the search text
if(stristr($y->item(0)->childNodes->item(0)->nodeValue,$q))
{
if($hint != "")
{
$hint .= "<br />";
}
$hint .= "<h1 id='poli'><a id='blue' href='";
$hint .= $z->item(0)->childNodes->item(0)->nodeValue;
$hint .= "'>";
$hint .= $y->item(0)->childNodes->item(0)->nodeValue;
$hint .= "</a> <br /><a id='green'>";
$hint .= $v->item(0)->childNodes->item(0)->nodeValue;
$hint .= "</a><a id='green'>";
$hint .= $w->item(0)->childNodes->item(0)->nodeValue;
$hint .= "</a><br/><img width='30' height='40' id='schmidt' src='politicians/";
$hint .= $u->item(0)->childNodes->item(0)->nodeValue;
$hint .= ".png' /></h1>";
}
}
}
}
// Set output to "no suggestion" if no hint were found
// or to the correct values
if($hint == "")
echo "No suggestions";
else
echo $hint;
?>
Un de mes amis m'a dit récemment que JSON est une excellente alternative à XML, car en utilisant JSON va mettre moins de pression sur le serveur car il ne aura pas besoin de Comptez sur PHP pour analyser le contenu du document XML. Le client l'analyserait à la place. Mais, je n'ai pas assez d'expérience avec JSON pour réécrire cette fonction afin qu'elle fonctionne avec un document JSON. Quelqu'un pourrait-il me donner quelques conseils?
Toute aide serait grandement appréciée!
Veuillez mettre en retrait tout le code d'au moins quatre espaces afin qu'il soit plus lisible. – ma11hew28
Vous devez sélectionner les balises HTML comme code si vous voulez qu'elles soient visibles ... –