Avatar billede kak Nybegynder
03. august 2010 - 13:02 Der er 8 kommentarer og
1 løsning

Kalde javascript fra webservice

Jeg har en webservice, som p.t. returnerer noget data fra en db via vb kode. Det virker fint nok, men jeg har brug for at lave en webservice, der bruger javascript til at behandle de modtagne data.

Kan det lade sig gøre, og i så fald, hvordan?

Grundlæggende har jeg en .asmx fil, der refererer til en .vb fil. Det er i .vb filen, at funktionen/webservicen ligger, men jeg kan ikke få den til at bruge javascript. Det skulle meget gerne foregå via kald til javascript-funktioner, som ligger i andre filer, så altså skal altså includes på en eller anden måde.
Avatar billede kak Nybegynder
03. august 2010 - 13:08 #1
Det slog mig lige, at javascript jo er clientside, så en webservice kan vel ikke køre javascript, eller hvad?!
Avatar billede arne_v Ekspert
03. august 2010 - 14:58 #2
Korrekt.

Du kan lade JavaScript client side kalde din web service og processe data client side.

JSON eller POX er langt bedre end SOAP til dette formaal (men man kan godt kalde det en web service selvom det ikke er SOAP).
Avatar billede kak Nybegynder
03. august 2010 - 15:24 #3
Tak for svaret! Hvis ikke en webservice kan køre javascript, så skal jeg dog finde en anden løsning.

Har prøvet at køre en javascript funktion x antal gange på en side (den skal køres for hver record, der hentes ud af databasen), men kan ikke helt få det til at fungere. Jeg har disse linjer i min vb-funktion:

Response.Write("<script language=javascript>")
Response.Write("minJavascriptFunktion();")
Response.Write("</script>")

Men jeg får blot en javascript-fejl på siden. "minJavascriptFunktion" kan godt kaldes fra samme, hvis jeg gør det "manuelt", altså f.eks. via en knap.

Jeg har lavet denne test:

Response.Write("<script language=javascript>")
Response.Write("alert('test');")
Response.Write("</script>")

Så får jeg en alert ved hver post der hentes fra databasen. Men hvordan får jeg den til at køre min funktion i stedet?
Avatar billede arne_v Ekspert
04. august 2010 - 03:59 #4
minJavascriptFunktion er vel ikke defineret det rigtige sted
Avatar billede kak Nybegynder
04. august 2010 - 08:41 #5
Funktionen er i en .js fil, som er inkluderet i <head> sektionen. <head> står godt nok til runat=server, men har det nogen betydning her?

Jeg kan som sagt godt kalde den, hvis jeg f.eks. placerer denne knap på siden:
<input id="Button1" type="button" value="button" onclick="minJavascriptFunktion();" />

Hvis jeg får vist kilden på siden, så står <script language=javascript>minJavascriptFunktion()</script> som det allerførst på siden (gentaget så mange gange, som der er records hentet fra databasen). Det virker lidt underligt, men det er måske ok?

Det samme sker, hvis jeg i stedet laver en alert, og det virker jo.

Men hvor skal jeg placere minJavascriptFunktion, for at kunne kalde den "dynamisk"?
Avatar billede arne_v Ekspert
05. august 2010 - 04:36 #6
Hvis du i browseren laver "show source" så kan du jo se om JavaScript funktionen er der som den skal være.
Avatar billede kak Nybegynder
05. august 2010 - 08:56 #7
Funktionen ligger som sagt i en .js fil, der er inkluderer i <head> sektionen. Hvis jeg laver show source, så ligger denne fil i <head> som forventet.
Avatar billede kak Nybegynder
06. august 2010 - 08:48 #8
Jeg har løst problemet på en lidt alternativ måde.

Jeg lader nu vb koden gemme alle nødvendige oplysninger i et hidden felt, og kører så javascript-funktionen én gang via body.Attributes.Add("onload", .....

Den funktion har jeg så ændret til at hente værdierne ud fra det hidden felt, og loope igennem værdierne.

Det virker :-)

Vil du oprette et svar, så du kan få point for din hjælp!
Avatar billede arne_v Ekspert
26. september 2010 - 21:13 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester