iing9808Medlem sedan sep. 200445 inlägg
Jag hämtar 18 st värden från en databas. Dessa värden skulle jag vilja spara i en JavaScript array för att kunna använda i det javascript som jag också har på sidan.
Så här ser min kod ut nu som är alldeles galen:
<Script Language=JavaScript>
var par = new array(18)
( mer JavaScript ...)
</Script>
<%
i= 1
For hal = i to 18
hal_par = RecSet("hal_par")%>
<Script Language=JavaScript>
par[i-1]=<%=hal_par%>
</Script>
<%
Next
(mer asp kod ...)
Hur ska jag få till så att dessa värden lägger sig i min par array?
iing9808Medlem sedan sep. 200445 inlägg
Fast det kanske är lättare att lägga allting i en asp array och sen hämta ut den i det javascript där jag behöver värdena.
EclipseMedlem sedan juli 20003 741 inlägg
Ett exempel på hur man kan göra.
Som du vet finns det många sätt att göra samma sak på! Be creative! :-)
SQL = "SELECT intID, strName FROM [users]"
Set mySQL = Conn.Execute(SQL)
' ## CEREATE ARRAY IF NOT END OF FILE
IF NOT mySQL.EOF THEN myLocalArray = mySQL.GetRows()
***
' ## PRINT TO SCREEN
IF IsArray(myLocalArray) THEN
myRow = myLocalArray
FOR j = 0 TO UBound(myRow,2)
' ## PRINT!!
response.write "Namn: " & myRow(1,j)
' ## LINE BREAK IF NOT LAST POST
IF j < UBound(myRow, 2) THEN response.write "<BR>"
NEXT
ELSE
' ## NO DATA
response.write "There are no users."
END IF
iing9808Medlem sedan sep. 200445 inlägg
Jag ändrade om lite så nu ser det ut så här:
<%
Dim parArray(18)
i= 1
For hal = i to 18
hal_par = RecSet("hal_par")
parArray(i-1)=hal_par
Next
%>
Hur hämtar jag nu ut detta om jag vill använda det i JavaScript?
alert(<%=parArray(0)%>
Fungerar inte så värst bra. Går det att hämta värdena till JavaSriptet?
@ndersMedlem sedan juni 200026 914 inlägg
Det är klart att det går att "hämta" värdena till javascriptet.
alert(<%=parArray(0)%>
skall vara
alert('<%=parArray(0)%>');
mvh
iing9808Medlem sedan sep. 200445 inlägg
Jag får bara: "Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch." När jag använder mig av
alert('<%=parArray(0)%>');
Jag kan skriva ut det i asp koden strax efter att jag skapat arrayen så jag vet att det finns nåt i den.
@ndersMedlem sedan juni 200026 914 inlägg
Du får visa mer kod.
Du har väl tänkt på att asp är asp och javascript är javascript? dvs, du har inte glömt script-taggar?
iing9808Medlem sedan sep. 200445 inlägg
Då kommer det ett litet urklipp här:
<%
..(asp kod) ...
%>
<Script Language="JavaScript">
function calcPoang()
{
alert('<%=parArray(0)%>'); //bara ett test för att kolla
}
..(mer JavaScript)..
</Script>
<%
..(asp kod) ...
Dim array
i=1
slut=18
For hal = i to slut
hal_par = RecSet("hal_par")
parArray(i-1)=hal_par
Response.Write(parArray(i-1)) 'bara test för att kolla
i=i+1
Next
Response.Write "<INPUT type='textarea' size=1 name=slag" & hal & " onblur='calcPoang()'>"
... ..(asp kod) ...
%>
Jag har alltså 18 textareor som heter slag1-18 (beroende på vilket varv den är i loopen). Och vid onBlur på dessa rutor anropas funktionen calcPoang som ligger ovanför i koden. Bara som ett test för att se om jag har något vettigt värde där så vill jag köra en alert på den.
@ndersMedlem sedan juni 200026 914 inlägg
Har du skapat arrayen ovanför javascriptet i koden då?
iing9808Medlem sedan sep. 200445 inlägg
Det har du ju alldeles rätt i.
Ändrade nu så jag kör Dim parArray(18) allra längst upp på sidan. Nu får jag ingen felutskrift, men den alert ruta som kommer fram är tom.
@ndersMedlem sedan juni 200026 914 inlägg
Jo, alltså, arrayen måste ju vara skapad och fylld för att du ska kunna ta ut några värden.
Kom ihåg att all asp-kod körs top-to-bottom, så det är inte så konstigt att det blir som det blir.
mvh
iing9808Medlem sedan sep. 200445 inlägg
Nu har jag nog helt dribblat bort mig själv. Första jag har i filen är asp kod, där jag skapar koppling mot en accessdatabas och sen sparar några av värdena i databasen i aspvariabler. Jag sparar också de data som har postats från föregående sida. Sen har jag JavaScript. Där ligger de funktioner som ska köras beroende på vad användaren klickar på. Bla den som ska skriva ut det som finns i parArray. Sen kommer asp kod igen som via Response.Write skriver ut en tabell innehållande lite val som användaren kan göra. Min parArray skapas (dock finns Dim parArray(18) längst upp på sidan i det första partiet asp kod) här och som ett test så skriver jag ut den inte i nån <TD> tagg så den hamnar utanför tabellen. När en viss textarea tappat sin focus (onBlur) så anropas JavaScript funktionen som ligger ovan i filen och då försöker jag hämta det som står i den (alltså efter att jag redan har skrivit ut det en gång).
Sker saker och ting i fel ordning ändå måntro?
@ndersMedlem sedan juni 200026 914 inlägg
Om saker och ting sker i fel ordning, det kan jag inte svara på eftersom jag inte ser exakt sammanhang och kod. Det man ska komma ihåg är att det första som sker är att all asp-kod exekveras, och efter det skickas resultatet till webbläsaren. ASP-koden exekveras uppifrån och ner, så du kan inte komma åt värden / variabler som skapas under aktuell kodrad. Så: ska du skriva ut ett javascript som alert:ar ett värde från en array i ASP, då måste arrayen vara skapad och fylld innan dess du skriver ut javascriptet och alert-raden. Exempel:
<%
' denna kod fungerar, eftersom variabeltilldelning görs innan användandet
dim strFoo
strFoo = "bar"
response.write "<script>alert('" & strFoo & "');</script>"
%>
<%
' denna kod funkar inte, eftersom när alert-raden skrivs ut har inte variabeln något värde
dim strFoo
response.write "<script>alert('" & strFoo & "');</script>"
strFoo = "foo!=bar"
%>
mvh
iing9808Medlem sedan sep. 200445 inlägg
Ja, att all aspkod exekveras borde ju betyda att det finns nåt i min array när jag försöker göra nåt med den i min JavaScript funktion. Felet måste ligga nån annanstans. Jag får väl dissikera rubbet helt enkelt. Tack så mycket för hjälpen!
iing9808Medlem sedan sep. 200445 inlägg
Jag gick tillbaka till ursprunget att skapa en JavaScript array i asp koden istället för att hämta en asp array i JavaScript. Det ska tydligen inte gå enligt mycket intelligenta och kunniga källor. Men med följande kod så rockar det:
<% (asp kod)
%>
<Script Language=JavaScript>
parArray=new Array(18)
function Test()
{
for(var i=1; i<19; i++)
{
alert(parArray[i-1]);
}
}
</Script>
<% (asp kod)
For hal = i to 18
hal_par = RecSet("hal_par")
%>
<Script Language=JavaScript>
parArray[<%=i-1%>]=<%=hal_par%>
</Script>
<%
RecSet.moveNext
Next
Response.Write "<INPUT type='textarea' size=1 name=slag onblur='Test()'>"
@ndersMedlem sedan juni 200026 914 inlägg
Det blir väldigt många script-taggar där. :)
Du kan minska ner det lite till:
response.write "<Script Language=""JavaScript"">"
For hal = i to 18
hal_par = RecSet("hal_par")
Response.write "parArray[" & i-1 & "]=" & hal_par & ";" & vbCrlf
RecSet.moveNext
Next
Response.write "</Script>"
mvh