Jag har hittat en halvfärdig AJAX lösning på nätet som jag har modifierat något. Jag har kommit så långt att jag gör mitt val i den första (av två) dropdown. Den andra DD ändras beroende på valen jag gör i den första. Jag skulle föreslå två saker angående din xml: Jag har ändrat lite ... helt utan det resultat jag vill ha. Javascriptet ser nu ut så här: Är själv nybörjare på AJAX gjorde en liknande sak i PHP nyligen. Jag har funnit en lösning. Hela AJAX lösning ligger redan och snurrar på. <b>..... det beror inte på teckenkodningen det har jag redan kollat.</b> Varför ska jag kolla igen när det inte är det.... har redan provat det mesta i alla möjliga kombinationer.... <b>Varför ska jag kolla igen när det inte är det...</b> okej...... Förslag: Att byta ut min redigerare är uteslutande. Slutade du läsa mitt inlägg efter andra raden? Där står det lite förslag på lösningar.. <b>Att byta ut min redigerare är uteslutande.</b> Aha, du menade alltså "Att byta ut min redigerare är uteslutet", inte att det var "uteslutande"?Problem med AJAX
Javascriptet på sida skickar en förfrågan till en ASP sida med databaskoppling, helt som det ska.
ASP sidan genererar en XML lista, helt som det ska.
XML listan som skapas hämtas upp av javascriptet......
Men här brister något......
ASP genererar en lista som ser ut så här:
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <Lopp>
<Lopp>Kalle</Lopp>
<Datum>2008-11-20</Datum>
<Lopp>Bertil</Lopp>
<Datum>2008-11-20</Datum>
<Lopp>Linus</Lopp>
<Datum>2008-11-20</Datum>
</Lopp>
Javascriptet på första sida ska fånga upp denna lista och lägga in den i en dropdown meny.....
Men märkligt nog så visas bara en post...... jag får inte ut alla posterna.
Efter som jag inte är så vass på javascript så slänger jag ut ett rop efter hjälp här.....
Koden:
<script language="javascript">
var xmlHttp
function showDatum(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
var url="getlopp.asp";
url=url+"?Datum="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function stateChanged()
{
if (xmlHttp.readyState==4)
{
var xmlDoc=xmlHttp.responseXML.documentElement;
document.getElementById("Loppen").innerHTML=xmlDoc.getElementsByTagName("Lopp")[0].childNodes[0].nodeValue;
//document.getElementById("Datumen").innerHTML=xmlDoc.getElementsByTagName("Datum")[0].childNodes[0].nodeValue;
}
}
for(i=0;i<=xmlDoc.getElementsByTagName("Loppen").length; i++){
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
</script>
DD listan som det ska in i ser ut så här:
<select name="Lopp">
<option value="">--- Välj lopp ---</option>
<OPTION ID="Loppen"></OPTION>
</select>
Sv: Problem med AJAX
1) Att använda taggnamnet "Lopp" två gånger, fast till helt olika saker, känns inte riktigt bra, ur tydlighetssynpunkt skulle det vara bra om du döpte om något av dem. T.ex. "LoppLista" och "Lopp"
2) Förslagsvis stoppar du in varje lopp under en egen tagg istället för att sakerna ligger rakt upp och ner under "lopp"-taggen.
Förslag:
<LoppLista>
<Lopp>
<Name>Kalle</Name>
<Datum>2008-11-20</Datum>
</Lopp>
<Lopp>
<Name>Bertil</Name>
<Datum>2008-11-20</Datum>
</Lopp>
<Lopp>
<Name>Linus</Name>
<Datum>2008-11-20</Datum>
</Lopp>
</LoppLista>
En sådan struktur är lättare att använda sedan på klienten, och är mindre känslig för förändringar (du kanske, i framtiden, skulle vilja skicka med antal deltagare i loppet också? Dessutom är det enklare att följa xml-koden om den är strukturerad på det sättet.)
> Men märkligt nog så visas bara en post...... jag får inte ut alla posterna.
Om vi tittar lite i koden så ser vi att det inte alls är märkligt:
> function stateChanged()
> {
> if (xmlHttp.readyState==4)
> {
Det som ligger i det här blocket är det som körs när aspsidan har "laddats ner".
> document.getElementById("Loppen").innerHTML=xmlDoc.getElementsByTagName("Lopp")[0].childNodes[0].nodeValue;
Vad du gör här är helt enkelt att plocka fram första taggen som råkar heta "Lopp", tar första barnet till den (som också råkar heta "Lopp", fast ligga i den första "Lopp" (förstår du varför jag tycker att du ska byta namn på någon av dem nu?) Sedan värdet på den taggen, som råkar vara "Kalle".
> for(i=0;i<=xmlDoc.getElementsByTagName("Loppen").length; i++){
> }
> }
Såvitt jag kan se så stänger den ett block en gång för mycket (om jag inte läser helt fel så avslutar du med en "}" en gång för mycket, det finns ingen motsvarande "{"? ) Hur som haver, loopen ligger på fel ställe, den ska ligga där den andra koden med innerHTML ligger för att den ska köras. Dessutom har du ingen tag i din xml som heter "Loppen", så det måste du ändra.
Jag skulle förslå att du tittar lite på hur DOM-trädet fungerar, allting blir mycket enklare då.
Sv:Problem med AJAX
var xmlHttp
function showDatum(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
var url="getlopp.asp";
url=url+"?Datum="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function stateChanged()
{
if (xmlHttp.readyState==4)
{
var xmlDoc=xmlHttp.responseXML.documentElement;
document.getElementById("Loppet").innerHTML=xmlDoc.getElementsByTagName("Lopp")[0].childNodes[0].nodeValue;
//document.getElementById("Datumen").innerHTML=xmlDoc.getElementsByTagName("Datum")[0].childNodes[0].nodeValue;
}
}
//¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
// for(i=0;i<=xmlDoc.getElementsByTagName("Loppen").length; i++){
//¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
</script>
Här är den andra dropdown menyn:
Välj lopp:
<select name="Lopp">
<option value="">--- Välj lopp ---</option>
<OPTION ID="Loppet"></OPTION>
</select>
<BR><BR><BR>
<INPUT TYPE="submit" NAME="" VALUE="--- KNAPP ---">
</form>
XML trädet ser ut så här:
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <LoppLista>
- <Loppet>
<Lopp>Mitt lopp</Lopp>
<Datum>2008-11-20</Datum>
</Loppet>
- <Loppet>
<Lopp>ditt lopp</Lopp>
<Datum>2008-11-20</Datum>
</Loppet>
- <Loppet>
<Lopp>nånn annans lopp</Lopp>
<Datum>2008-11-20</Datum>
</Loppet>
</LoppLista>
Trots detta så fungerar det inte.
Den här raden:
for(i=0;i<=xmlDoc.getElementsByTagName("Loppen").length; i++){
Var något som jag la in och sedan glömt att ta bort. Har försökt att få igång scriptet med den men inte lyckats.
Sv:Problem med AJAX
Men jag väljer att generera hela select taggen i en separat php sida.
typ:
<Select..nr1>
</select>
<Div id="sel2">här placeras all info från min php sida</Div>
använder sedan raden
if(httpAjax.readyState == 4){
document.getElementById("sel2").innerHTML = httpAjax.responseText;
return true;
}
Med andra ord så genererar jag en hel select tagg i php sidan som sedan infogas.
Inget fullständigt exempel men kanske lite nya ideer.
/AndersSv: Problem med AJAX
Dock så skrivs inte åäö ut korrekt utan det blir bara frågetecken, typ om jag ska sriva åke så blir det bara ?..... det beror inte på teckenkodningen det har jag redan kollat.Sv:Problem med AJAX
Kolla igen...Sv: Problem med AJAX
Någon som haft problem tidigare med åäö i javascript kanske då i en ajax lösning.Sv:Problem med AJAX
För att det garanterat är teckenkodningen. Du har missat något.
(Det vanligaste felet brukar vara att man inte har sparat skriptfilerna med rätt teckenkodning)Sv: Problem med AJAX
Jag läste på en helt annan sida att man ska spara själva sidan i rätt teckenkodning också. Så jag öppnade min ASP sida i windows anteckningar och valde "Spara som...". Där valde jag teckenkodning UTF-8 och vips så fungerade allting som det skulle. åäö läste som de skulle och allt var frid & fröjd.
Men när jag använder min html redigerare (som jag gör alla sidor med) och öppnar och sedan sparar/stänger samma ASP fil där så ändrar den teckenkodning och jag får öppna filen igen med anteckningar för att där ställa rätt teckenkodningen. Återkommer mer och min html redigerare snart......
Då tänkte jag i min enfald att jag ställer in rätt teckenkodning via anteckningar och sen skrivskyddar ASP sidan så jag av misstag inte råkar öppna filen i min html redigerare så borde väl allt vara lungt. Sagt och gjort så jag gjorde detta, och allt fungerade igen. MEN...(alltid dessa men) när jag då stoppar in fler värden i min databas som ASP sidan så småningom ska ta fram, då ändras teckenkodningen på ASP sidan och allt är katastrof igen.
Kan det vara så enkelt att det är själva databasen som spökar nu ? Så att det är den som ska ställas in med teckenkodning UTF-8 OCH VAR gör man isåfall detta ?
Till min html redigerare.....
Teckenkodningen där är inställd på default... vad de nu är för teckenkodning vet jag inte....
men jag töänkte att det går väl att ställa den i UTF-8 så att alla mina andra sidor också får rätt teckenkodning och att jag slipper strula fram & tillbaka...... men där fanns inget om UTF-8.... ?!?!?!
De enda teckenkodningarna där finns i min html redigerare:
ANSI, Arabic, Baltic, Chinese Big5, DEFAULT, East Europe, GB2312, Greek, Hangeul, Hebrew, Johab, Mac, OEM, Russian, SHIFTJIS, SYMBOL, Thai, Turkish, Vietnamese.
Den HTML redigeraren jag använder är Macromedia´s gamla Homesite v.5Sv:Problem med AJAX
1) Byt redigerare, den verkar inte veta vad Unicode är ens en gång
eller
2) Se över din kod, du skulle kunna skicka svaret som t.ex. ISO-8859-1 istället genom att sätta Response.Encoding (eller vad den nu heter) manuellt på sidorna som strular.
Angående databasen så kommer det in konstig data, kolla upp meta-taggarna, du kan testa att sätta encoding där också på de sidorna där man kan mata in formulärdata. Mest sannolikhet har datan du stoppar in i databasen en encoding och asp-filen en annan.Sv: Problem med AJAX
Det borde finnas någon lösning...... Sv:Problem med AJAX
Sv:Problem med AJAX
Vad utesluts av ett sådant byte?Sv:Problem med AJAX