Question:
I have a problem that depending on the text selected in the first selection box it doesn't load the years related to it in the database. Only when the text loaded in the first box has no space does jquery work.
*Follows the file with the checkboxes "genera_html.php"*
<html>
<head>
<title>Gerador Planos de Ensino</title>
<link media="screen" href="./css/styles.css" >
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="./js/ver_selects.js" type="text/javascript">
</script>
<script type="text/javascript">
$(document).ready(function(){
$('#departamentos').change(function(){
$('#anos').load('anos.php?departamentos='+$('#departamentos').val() );
});
});
</script>
</head>
<?php
include "valida_cookies.inc";
require("connect.php");
?>
<body>
<form class="cad_admin" method="GET" action="anos.php" autocomplete="on" >
<ul>
<h2>Gerador Planos de Ensino</h2>
<li>
<li><label>Escolha um Departamento</label>
<select name="departamentos" id="departamentos" >
<?php
require("connect.php");
$depto_result=mysql_query("SELECT DISTINCT DepartamentoDoResponsavel FROM responsavel ORDER BY DepartamentoDoResponsavel ASC");
echo "<option value='00'>".'Escolha um departamento'."</option>";
while($row = mysql_fetch_array($depto_result)){
echo "<option>".$row['DepartamentoDoResponsavel']."</option>";
}
mysql_close();
?>
</select></li>
</select></li>
<li><label>Ano</label>
<select name="anos" id="anos">
<option value="00">Escolha um Ano</option>
</select></li>
<li>
<button class="submit" type="submit">Gerar</button>
</li>
</li>
</ul>
</form>
</body>
</html>
And here the anos.php being called in the jquery
$departamento = $_GET['departamentos']; echo $departamento; require('connect.php'); $sql = "SELECT DISTINCT AnoDeAplicacao FROM planodeensino WHERE planodeensino.DepartamentoPorExtenso = '$departamento'"; $result = mysql_query($sql); echo "<option value='0'>".'Escolha um Ano'."</option>"; while($linha = mysql_fetch_array($result) ){ echo "<option>".$linha['AnoDeAplicacao']."</option>"; } mysql_close(); ?>
Answer:
I think jQuery's param
method will help you: http://api.jquery.com/jQuery.param/
Try changing the line that calls the jQuery load
to make it look like this:
$('#anos').load('anos.php?' + $.param({ departamentos: $('#departamentos').val() }) );
Another thing: your application is using ISO-8859-1, except Ajax is UTF-8. To solve this, change the first line of the "anos.php" script to:
$departamento = utf8_decode($_GET['departamentos']);