Avatar billede s0mmer Nybegynder
15. februar 2009 - 14:03 Der er 26 kommentarer og
1 løsning

Fra Javascript variable til ASP Variable

Hej Eksperter,

Jeg har nogle javascript variabler som jeg ønsker at gemme i ASP variabler således de kan gemmes i min MS SQL database.

Hvordan gøres dette nemmest? -bedst?
Avatar billede majbom Novice
15. februar 2009 - 19:46 #1
nu ved jeg ikke hvordan det skal hænge sammen, men du kan få javascript til at smide variablerne i nogle hidden form felter og så submitte en form.

du kan også bruger window.location.href='nyside.asp' og sende variablerne med i din query.

alternativt skal du ud i noget AJAX, som måske er lidt overkill, hvis du kan "nøjes" med et af ovenstående forslag.
Avatar billede s0mmer Nybegynder
15. februar 2009 - 20:03 #2
splazz > det skal bruges til at gemme statistik om besøgende. Dvs. når folk træder ind på siden skal dette gemmes. Derfor er en form udelukket. Det ville samtidig være for meget at redirecte hele tiden for gemme dataerne.. og så er sidste svar, ajax?
Avatar billede keysersoze Ekspert
15. februar 2009 - 20:59 #3
ajax er som oftest tænkt som to-vejs, dvs man sender et request og modtager et svar. Skal det bare bruges til statistik kan du jo fx bare lave et asp-script som source med de parametre der er nødvendig for dig.
Avatar billede tjens Nybegynder
15. februar 2009 - 21:43 #4
Har selv lige haft behov for det samme.

Lavede en usynlig iframe, som javascript så ændrer source på.

Derved laves en request til serveren med værdier fra java script:

function logvisit() {
  document.getElementById('logframe').src="http://ditdomain.dk/visitorlog.asp?" +
  "Referrer=" + document.referrer +
  "&Navigator=" + navigator.userAgent;
}
....
<body onload="logvisit();">
....
<iframe id="logframe" style="display:none">
</iframe>
Avatar billede s0mmer Nybegynder
15. februar 2009 - 23:27 #5
keysersoze > Kan du forklare dybere?

tjens > Men er det "pænt" at lave det på den måde?
Avatar billede olebole Juniormester
16. februar 2009 - 09:14 #6
Avatar billede olebole Juniormester
16. februar 2009 - 09:15 #7
- og det er ligeså 'pænt' som at bruge XMLHttpRequest (Ajax)
Avatar billede s0mmer Nybegynder
18. februar 2009 - 14:57 #8
olebole > kan du forklare dit eksempel?
Avatar billede s0mmer Nybegynder
18. februar 2009 - 15:06 #9
.. altså mener hvordan fanger jeg dem? kan jo ikke bare bruge request.querystring("Referrer") ?
Avatar billede olebole Juniormester
19. februar 2009 - 02:04 #10
- hvorfor ikke?
Avatar billede s0mmer Nybegynder
19. februar 2009 - 09:15 #11
hvis jeg gør dette:

<script type="text/javascript">
var stat = new Image();
stat.src = "http://www.minwebside.dk/v2/browser.asp?Referrer="+document.referrer+"&Navigator="+navigator.userAgent+"&Browser="+BrowserDetect.browser+"&OS="+BrowserDetect.OS;
</script>

og dette længere nede:

<%
Response.Write("test: "&Request.QueryString("Referrer"))
Response.Write("<br>test2: "&Request.QueryString("Navigator"))
%>

Så får jeg intet ud udover test og test2... Kan du hjælpe?
Avatar billede olebole Juniormester
19. februar 2009 - 10:19 #12
ASP-koden skal stå i filen 'browser.asp' - så virker det fint  =)
Avatar billede s0mmer Nybegynder
19. februar 2009 - 10:35 #13
olebole > Nu får du copy & paste.. det virker ikke :(

<html>
<head>

</head>
<body>
<script type="text/javascript">
var stat = new Image();
stat.src = "http://www.minside.dk/v2/test.asp?tester=123";
</script>
<%
Response.Write("test: "&Request.QueryString("tester"))
%>

</body>
</html>


Hvis jeg derimod går op min browser og skriver:
http://www.minside.dk/v2/test.asp?tester=123

Så rammer den tester og skriver:
test: 123


Hva gør jeg galt?
Avatar billede olebole Juniormester
19. februar 2009 - 10:50 #14
Bruger du to filer?

Din fil 'test.asp':

<html>
<head>

</head>
<body>
<script type="text/javascript">
var stat = new Image();
stat.src = "http://www.minside.dk/v2/stat.asp?tester=123";
</script>

</body>
</html>

Din fil 'stat.asp':

<%
Response.Write("test: "&Request.QueryString("tester"))
%>
Avatar billede s0mmer Nybegynder
19. februar 2009 - 10:52 #15
Nej det der er test.asp hvor jeg har kopieret hele dokumentet.
Avatar billede s0mmer Nybegynder
19. februar 2009 - 10:53 #16
evt en måde så jeg kan få vist billedet så jeg kan tjekke dets src?
Avatar billede s0mmer Nybegynder
19. februar 2009 - 10:56 #17
tror jeg er på noget.. hvis jeg gør eks:
var stat = new Image();
stat.src = "http://www.mitwebsite.dk/v2/images/logo.jpg";
stat.width = 300;
stat.height = 300;

får jeg intet billede vist?
Avatar billede tjens Nybegynder
19. februar 2009 - 11:12 #18
Gå over til mit forslag med iframe mens du tester.
og fjern display:none så du kan se hvad du laver ;-)

Men det virker ikke som om du har forstået at du skal lave 2 asp sider:

En side som brugeren ser,
og en anden side som modtager requesten når javascript i første side laver .src="noget"
Avatar billede s0mmer Nybegynder
19. februar 2009 - 11:18 #19
tjens > Så jeg SKAL bruge 2 sider? Nej dette må jeg have misforstået.. Men hvis jeg eks har test.asp og test2.asp:


TEST1.asp:
<html>
<head>

</head>
<body>
<script type="text/javascript">
var stat = new Image();
stat.src = "http://www.mitwebsite.dk/v2/test.asp?tester=123";
</script>

</body>
</html>


TEST2.asp (som jeg åbner i browseren):
<!--#include file="test.asp"-->
<%
Response.Write("test: "&Request.QueryString("tester"))
%>


Er der noget jeg misforstår?

Jeg prøver lige dit iframe eks..
Avatar billede s0mmer Nybegynder
19. februar 2009 - 11:23 #20
tjens > Dit eksempel er prøvet:

<html>
<head>

</head>
<body onload="logvisit();">
<script type="text/javascript">
function logvisit() {
  document.getElementById('logframe').src="http://www.mitsite.dk/v2/test.asp?" +
  "Referrer=" + document.referrer +
  "&Navigator=" + navigator.userAgent;
}
</script>
<iframe id="logframe">
</iframe>


<%
Response.Write("Test: "&Request.QueryString("Referrer"))
%>
</body>
</html>


Og det der er på min 1 side test.asp.. Jeg kan ikk skrive det ud, men hvis jeg højre klikker på framet og siger vis kun denne frame kan jeg se de rigtige ting i url'en, men hvordan fanger jeg dem?
Avatar billede tjens Nybegynder
19. februar 2009 - 11:42 #21
Det er stadig uklart for mig hvad dine 2 sider hedder.

Men .src= i asp-side 1 skal lave URL til asp-side 2

og din Response.Write("Test: "&Request.QueryString("Referrer")) linie skal ligge i asp-side 2


Ideen er jo at asp-side 2, i sidste ende, ikke returnerer noget særligt til browseren, men derimod skriver til din database jævnfør dit originale spørgsmål.
Avatar billede s0mmer Nybegynder
19. februar 2009 - 12:00 #22
ASP side 1:
iframe med src til ASP side 2

ASP side 2:
Skriver til db/printer ting ud.

Hvordan skal ASP side 2 nogensinde fange det?

Muligt jeg kan få et konkret eksempel?
Avatar billede tjens Nybegynder
19. februar 2009 - 12:15 #23
Jeg bruger desværre PHP i min side 2, og jeg skriver til en tekstfil i stedet for en database, men jeg viser min visitorlog.php her, hvis det kan hjælpe lidt:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML  4.01//EN"  "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head></head>
<body>
<?php
  if( $fh = fopen( "../visitorlog.txt", "a " ) ) {
    $querystring = ''; 
    $logtxt = "\n From: $REMOTE_ADDR"; 
    $logtxt .= " Host:" . gethostbyaddr($REMOTE_ADDR);
    foreach ($_GET as $key => $value) {
        $querystring .= ' ' . $key.":".$value;
    }
    $logtxt .=  $querystring; 
    fputs( $fh, $logtxt, strlen($logtxt) ); 
    echo "Log written:<br> $logtxt <br>"; 
    fclose( $fh );
  }
?>
< /body>
</html>

Bemærk at jeg ud over GET-variablene også bruger relevante servervariable. (Min opgave var jo at logge et besøg.)

Kodestumperne i mit første indlæg i dette spørgsmål, er det jeg tilføjede til den side (1) som skulle logges.
Avatar billede s0mmer Nybegynder
19. februar 2009 - 12:24 #24
tjens > så virker det. mange tak for hjælpen :) send svar og du får points!
Avatar billede olebole Juniormester
19. februar 2009 - 12:26 #25
Du har komplet misforstået alt  =)

Filen, du skal hente information fra, ser sådan ud:

<html>
<head>

</head>
<body>
<script type="text/javascript">
var stat = new Image();
stat.src = "http://www.minside.dk/v2/stat.asp?tester=123";
</script>

</body>
</html>

Her skal ingen billeder vises. Hele stuntet med 'new Image()' er kun for at kunne sende noget info til serveren. Der skal ikke vises nogen billeder ... billeder er slet ikke inde i billedet  ;o)

Ingen af filerne skal inkludere noget - og du kan ikke komme til at se 'stat.asp', hvorfor det ikke giver mening at skrive noget ud i filen.
Filen er tænkt til at sætte noget ind i databasen, så sæt ind i databasen eller skriv en log-fil, men lad være med at skrive noget ud i filen  ;o)
Avatar billede olebole Juniormester
19. februar 2009 - 12:29 #26
Årsagen til, jeg valgte løsningen med 'new Image()' er, at iframe ikke har været del af HTML siden version 3.2  ;o)
Avatar billede tjens Nybegynder
19. februar 2009 - 12:51 #27
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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