consulta de lista de expansão xajax
Pergunta
Como você verá, sou um novato em todas essas coisas de ajax, mas posso fazer um pouco de php, então optei pelo xajax para cuidar do javascript para mim.
Eu tenho uma matriz com itens listados em seções diferentes.Quero usar esse array para produzir uma lista não ordenada que se expanda quando alguém clica em uma seção.
Adaptei um script que encontrei aqui:
Meu script atualmente está assim:
<?php
include ("xajax_core/xajax.inc.php");
$subs = array(
"Mortice" => array("Union Deadlock 2.5", "Union Deadlock 3", "Union Sashlock 2.5", "Union Sashlock 3"),
"Cylinders" => array("30/30 Euro", "30/40 Euro", "30/50 Euro", "30/60 Euro"),
"uPVC" => array("30/92 Fullex", "35/92 Fullex", "Sash jammer")
);
function addsub($show, $key)
{
$objResponse=new xajaxResponse();
if ($show=="true") {
$objResponse->assign("list", "style.display", "block");
$objResponse->replace("$key","innerHTML","true","false");
}
else {
$objResponse->assign("list", "style.display", "none");
$objResponse->replace("$key","innerHTML","false","true");
}
return $objResponse;
}
$xajax = new xajax();
$xajax->registerFunction("addsub");
$xajax->processRequest();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php $xajax->printJavascript() ?>
<title>Expand menu test</title>
<style type="text/css">
.list {display: none;}
</style>
</head>
<body>
<?php
echo "<ul>\n";
foreach ($subs as $key => $group) {
echo "<li id=\"".$key."\" onClick=\"xajax_addsub('true','$key');\">".$key."\n";
echo "<ul class=\"list\" id=\"list\">\n";
while (list($list, $each) = each($group)) {
echo "<li id=\"list\">".$each."</li>\n";
}
echo "</ul>\n</li>\n";
}
echo "</ul>";
?>
</body>
</html>
A idéia é que quando um elemento é clicado, ele altera o estilo de exibição para bloquear (mostrando assim o resto da lista) e define a função como 'false', portanto, se for clicado novamente, ele mudará a exibição de volta para nenhum e ocultará o lista.
Escusado será dizer que não funciona, então se alguém pudesse me indicar o porquê, ficaria eternamente grato.
Saúde,
Usuario.
Resolvido - classifiquei colocando as listas a serem mostradas (ou ocultadas) em <divs>
e atribuindo a cada um deles um ID exclusivo e definindo seu estilo como display:nenhum.Então eu só tive que fazer uma solicitação para definir o estilo como bloco quando ele fosse clicado.
Obrigado.