0backslash0
Gebruiker
- Lid geworden
- 3 jul 2007
- Berichten
- 31
Hallo,
eerst en vooral, mijn excuses als dit niet het juiste sub-forum is.
Onlangs ben ik begonnen met een zoekfunctie voor een site, en na een beetje
googlelen stuite ik op een AJAX implementatie voor een livesearch.
Het zag er goed uit dus ben ik hieraan begonnen. De functie werkte naar behoren
en ik was nog enkele details aan het aanpasse, wanneer op een gegeven moment de
script niet meer werkte. Na enige tijd rondzoeken ben ik tot de vaststelling gekomen
dat het aanroepen van het php script constant readystate 1 retourneerd.
Indien ik via de browser naar het php bestand navigeer, werkt deze zonder problemen.
Dus ik snap niet goed waarom searchHandler.js hem niet behoorlijk kan laden.
volgende bestanden worden bij de zoekfunctie gebruikt:
livesearch.html - enkel het body gedeelte, in de head staat een verwijzing naar searchHandler.js
searchHandler.js
search.php
Ik hoop dat dit was duidelijk is
eerst en vooral, mijn excuses als dit niet het juiste sub-forum is.
Onlangs ben ik begonnen met een zoekfunctie voor een site, en na een beetje
googlelen stuite ik op een AJAX implementatie voor een livesearch.
Het zag er goed uit dus ben ik hieraan begonnen. De functie werkte naar behoren
en ik was nog enkele details aan het aanpasse, wanneer op een gegeven moment de
script niet meer werkte. Na enige tijd rondzoeken ben ik tot de vaststelling gekomen
dat het aanroepen van het php script constant readystate 1 retourneerd.
Indien ik via de browser naar het php bestand navigeer, werkt deze zonder problemen.
Dus ik snap niet goed waarom searchHandler.js hem niet behoorlijk kan laden.
volgende bestanden worden bij de zoekfunctie gebruikt:
livesearch.html - enkel het body gedeelte, in de head staat een verwijzing naar searchHandler.js
HTML:
<body>
<form>
<div class="searchfield">
<label for="zoek_artikel_nr">Zoek op Artikel Nr: </label>
<input type="text" size="30" name="zoek_artikel_nr" onKeyUp="sendRequestSearch('artikel_nr',this.value);" />
</div>
<div class="searchfield">
<label for="zoek_artikel">Zoek op Artikel: </label>
<input type="text" size="30" name="zoek_artikel" onKeyUp="sendRequestSearch('artikel',this.value);" />
</div>
<div class="searchfield">
<label for="zoek_streek">Zoek op Streek: </label>
<input type="text" size="30" name="zoek_streek" onKeyUp="sendRequestSearch('streek',this.value);" />
</div>
<br style="clear: both;" />
<input type="hidden" id="invoer_artikel" />
<input type="button" style="clear: both;font-weight: bold;" value="Toevoegen" />
<input type="reset" style="clear: both;font-weight: bold" value="Reset" onClick="document.forms[0].childNodes[15].innerHTML = 'something'" />
<div id="zoek_resultaten"></div>
</form>
</body>
searchHandler.js
Code:
function createRequestObject() {
var newRequest;
if(window.XMLHttpRequest){
newRequest = new XMLHttpRequest();
} else if(window.ActiveXObject) {
newRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {
newRequest = NULL;
alert('Probleem met het aanmaken van hetXMLHttpRequest object');
}
return newRequest;
}
var http = createRequestObject();
function sendRequestSearch(search_argument,searchstring) {
var querystring = "search_argument="+search_argument+"&searchstring="+searchstring;
http.open('get', 'http://localhost:8084/files/Sales/cgi-bin/search.php?'+querystring);
http.onreadystatechange = handleResponseSearch();
http.send(null);
}
function handleResponseSearch() {
if(http.readyState == 4 && http.status == 200) {
if(http.responseText) {
document.forms[0].childNodes[15].innerHTML = 'you have some results';
} else {
document.forms[0].childNodes[15].innerHTML = "you don't have any results";
}
} else {
document.forms[0].childNodes[15].innerHTML = "it failed, readystate = "+http.readyState;
}
}
search.php
PHP:
<?php
require_once('connector.inc.php');
require_once('validateQuery.inc.php');
mysql_query('USE univer');
$query = "SELECT `art_nr`,`artikel`,`streek` FROM `wijnen`;";
$result = myquery($query);
$i = 0;
while ($row = mysql_fetch_assoc($result)) // The array that will hold the row that is returned
{
/**
* Now that we have the array that holds the row content,
* we need to put it's content into a formatted string
*/
$i++;
$rows[$i] = $row;
}
unset($row, $query, $result, $i);
// Placing the form input into local variables, while also tripping any leading & trailing whitespace
$zoek_argument = trim($_GET['search_argument']);
$searchstring = trim($_GET['searchstring']);
if(isset($searchstring) && !false == (boolean)$searchstring) {
foreach ($rows as $row)
{
switch ($zoek_argument)
{
case 'artikel_nr':
foreach($row as $value)
{
unset( $value);
if (strstr($row['art_nr'], $searchstring)) {
echo '<span onclick="document.forms[0].invoer_artikel.value=this.childNodes[0].nodeValue">' . $row['art_nr'] . ' - ' . htmlentities($row['artikel']) . '</span><br />' . "\n";
}
}
unset($row);
break;
case 'artikel':
foreach($row as $value)
{
unset( $value);
if(strstr($row['artikel'], $searchstring)) {
echo '<span onclick="document.forms[0].invoer_artikel.value=this.childNodes[0].nodeValue">' . $row['art_nr'] . ' - ' .htmlentities($row['artikel']) . '</span><br />' . "\n";
}
}
unset($row);
break;
case 'streek':
foreach($row as $value)
{
unset($value);
if(strstr($row['streek'], $searchstring)) {
echo '<span onclick="document.forms[0].invoer_artikel.value=this.childNodes[0].nodeValue">' . $row['art_nr'] . ' - ' . htmlentities($row['artikel']) . '</span><br />' . "\n";
}
}
unset($row);
break;
default:
break;
}
}
}
mysql_close($link);
unset($rows, $searchstring, $zoek_argument, $link);
exit;
?>
Ik hoop dat dit was duidelijk is

Laatst bewerkt: