In een pagina heb ik de volgende code staan:
function addOption(selectbox,text,value)
{
var optn = document.createElement("option");
optn.text = text;
optn.value = value;
selectbox.options.add(optn);
}

xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4)
{
var month = xmlhttp.responseText;
for (var i=0; i < month.length;++i)
{
addOption(document.getElementById('selected_stations'), month[i], month[i]);
}
}
}
xmlhttp.send(null);

De waarden uit de php-query worden nu als 1 lange string getoond, in plaats van netjes onder elkaar. Is het mogelijk om deze uitvoer te splitsen op een of andere manier? Bijv. Angel FM wordt nu letter voor letter onder elkaar gezet. Misschien moet er een teken tussen, waar je vervolgens een replace-functie voor moet maken?
Ik heb zelf nog geen dingen in elkaar gezet met ajax, maar volgens mij haal je met elk HTTP request 1 string op.

wat je zou kunnen doen in je PHP file is een string opbouwen op de volgende manier:
<?php
$string = "optie1text|optie1value||optie2text|optie2value";
?>

Je kunt dan een stuk script schrijven op de volgende manier:

<?php
// gegevens ophalen
xmlhttp.onreadystatschange=function() {
if (cmlhttp.readyState == 4) {
var string = xmlhttp.responseText;
}
}

// string opbreken in opties
var options = string.split("||");

// de opties doorlopen
for (i = 0; i < options.length; i ++) {
// De optie opbreken in een text en een value
var optietext = options[i].split ("|")[0];
var optievalue = options[i].split ("|")[1];
// De optie toevoegen
addOption (document.getElementById('selected_stations', optietext, optievalue);
}
?>
(de php script tags zijn even voor de higlighting)

Let wel dat dit letterlijk mijn eerste keer werken met AJAX technologie is, dus het kan zijn dat het niet helemaal correct werkt de eerste keer. Ik hoop echter wel dat het idee duidelijk is.

Succes ermee!!!!
Daar was ik al bang voor ja haha, dat dat de enige manier zou zijn. Niet echt een mooie oplossing maar als dat werkt dan moet het maar zo.

Bedankt in elk geval, ik ga het eens proberen.

Reageren