Per la lettera F del nostro dizionario useremo una form di ricerca, che ci consentirà di inserire un termine da cercare e inviarlo al server
Ecco la nostra form
<div class="letter" id="letter-f">F
<form>
<input type="text" name="term" value="" id="term">
<input type="submit" name="search" value="search" id="search">
</form>
</div>
Javascript code:
$(document).ready(function() {
$('#letter-f form').submit(function() {
$('#dictionary').load('f.php', {'term': $('input[@name="term"]').
val()});
return false;
});
});
Ovviamento dovrò cambiare il mio codice php in modo da andarmi a cercare il valore passato dalla form:
foreach ($entries as $term => $entry) {
if (strpos($term, strtoupper($_REQUEST['term'])) !== FALSE) {
$html = '<div class="entry">';
$html .= '<h3 class="term">';
$html .= $term;
$html .= '</h3>';
$html .= '<div class="part">';
$html .= $entry['part'];
$html .= '</div>';
$html .= '<div class="definition">';
$html .= $entry['definition'];
if (isset($entry['quote'])) {
foreach ($entry['quote'] as $line) {
$html .= '<div class="quote-line">'. $line .'</div>';
}
if (isset($entry['author'])) {
$html .= '<div class="quote-author">'. $entry['author']
.'</div>';
}
}
$html .= '</div>';
$html .= '</div>';
print($html);
}
}
JQuery fornisce un metodo interessante per serializzare i parametri della query automaticamente. In questo caso ho una sola input, ma se ne avessi di più dovrei cercare ciascuna con il selettore Xpath. Ma si può evitare
Javascript code:
$(document).ready(function() {
$('#letter-f form').submit(function() {
$.get('f.php', $(this).find('input').serialize(), function(data)
{
$('#dictionary').html(data);
});
return false;
});
});