webForumDet fria alternativet

Att blanda ASP + JavaScript??

39 svar · 1 931 visningar · startad av Eclipse

EclipseMedlem sedan juli 20003 741 inlägg
#1

Jag har en sträng i JavaScript som jag skulle vilja på något vis skriva in i en Accessdatabas, då helst med hjälp av ASP.

Går det att anropa en funktion skriven i ASP med hjälp av JavaScript!?

colioneMedlem sedan juni 20013 386 inlägg
#2

Du får anropa en sida som kör den funktionen/koden.

TroxyMedlem sedan mars 20041 508 inlägg
#3

Hm, nu måste vi hålla isär saker och ting. :)
ASP körs på serversidan och JavaScript på klientsidan i webbläsaren.
Webbläsaren känner inte alls till din ASP-kod.
Du kan endast anropa dina ASP-sidor med HTTP GET/POST-anrop.
Det finns diverse sätt att göra detta på, förslagsvis Ajax med oändligt antal exempel.

EclipseMedlem sedan juli 20003 741 inlägg
#4

Du har en poäng!

Det var ju du som skrev om document.referrer i den andra tråden! Jag är verkligen jättekass på javascript, men rätt bra på asp... så jag tänkte, om jag håller mig till asp så långt som möjligt.

Hur kan jag få in document.referrer i en databas!? Förslag?

Peter SMedlem sedan dec. 20025 484 inlägg
#5

Använd Request.ServerVariables("HTTP_REFERER").

colioneMedlem sedan juni 20013 386 inlägg
#6

Troxy skrev:

Hm, nu måste vi hålla isär saker och ting. :)
ASP körs på serversidan och JavaScript på klientsidan i webbläsaren.
Webbläsaren känner inte alls till din ASP-kod.
Du kan endast anropa dina ASP-sidor med HTTP GET/POST-anrop.
Det finns diverse sätt att göra detta på, förslagsvis Ajax med oändligt antal exempel.

Det var ju det jag sa. :q
Sen går det ju att skapa dummyelement med en src till ASP-filen i fråga. Visserligen ett GET-anrop. ;)
Fast är du helt säker på att du inte kan HEAD:a en ASP-sida?

TroxyMedlem sedan mars 20041 508 inlägg
#7

Eclipse skrev:

Hur kan jag få in document.referrer i en databas!? Förslag?

Här är en fullösning som kanske funkar:

var x = new Image();
x.src = 'http://www.example.com/save.asp?referrer=' + encodeURIComponent((document.referrer) ? document.referrer : '');

colione skrev:

Det var ju det jag sa. :q

Ja, delvis. Men jag sa lite mer :P

EclipseMedlem sedan juli 20003 741 inlägg
#8

Denna koden har jag klurat ut på egen hand och det fungerar inte.

function tracker{page) {
var x = new Image();
x.src = 'http://www.server.se/imgpwd/session.asp?referrer=' + encodeURIComponent((document.referrer) ? document.referrer : '');
}

Jag ropar på denna, som Google ropar på Analytics:

<script src="http://www.server.se/imgpwd/session.js" type="text/javascript">
</script>
<script type="text/javascript">
tracker();
</script>

Det är svårt för mig att se vad som inte stämmer.

Fredde MannenMedlem sedan nov. 20013 498 inlägg
#9

Vad är det du egentligen vill uppnå med Javascriptet / ASP?

headbugMedlem sedan sep. 2006858 inlägg
#10

Eclipse skrev:

Denna koden har jag klurat ut på egen hand och det fungerar inte.

function tracker{page) {
var x = new Image();
x.src = 'http://www.server.se/imgpwd/session.asp?referrer=' + encodeURIComponent((document.referrer) ? document.referrer : '');
}

Det är svårt för mig att se vad som inte stämmer.

Jag undrar samma sak som FreddeMannen, men i alla fall så är det en typo, ändra { till en ( direkt efter tracker och för alldel ta bort variablen page om du ändå inte tänker använda den:

function tracker() {
var x = new Image();
x.src = 'http://www.server.se/imgpwd/session.asp?referrer=' + encodeURIComponent((document.referrer) ? document.referrer : '');
}
EclipseMedlem sedan juli 20003 741 inlägg
#11

Tack för exempel!

Jag vill göra en sån sak som fungerar liknande som Google Analytics. Dvs, att man inkluderar en liten kodsnutt på alla sidor.

Jag har gjort lite experiment... men ännu inte riktigt fått till det. Jag vill gärna exekvera asp-sidan med hjälp av javascript, om det nu går!

Det är ingen bild utan ren text.

@ndersMedlem sedan juni 200026 914 inlägg
#12

Nu vet jag inte hur din kod ser ut exakt i detta nu, men tidigare hade du gjort detta misstag:

function tracker[b][blue]{[/blue][/b]page) {

Dvs - krull där det inte ska vara krull.

mvh

Fredde MannenMedlem sedan nov. 20013 498 inlägg
#13

Eclipse skrev:

Tack för exempel!

Jag vill göra en sån sak som fungerar liknande som Google Analytics. Dvs, att man inkluderar en liten kodsnutt på alla sidor.

Jag har gjort lite experiment... men ännu inte riktigt fått till det. Jag vill gärna exekvera asp-sidan med hjälp av javascript, om det nu går!

Det är ingen bild utan ren text.

Ett tankesätt kan ju vara att man:

<script type="text/javascript" src="filen.js"></script>
<script type="text/javascript">
tracker();
</script>

filen.js

function tracker() {
 if (document.referrer) ref=escape(document.referrer)
 var screen = [];
 var screen[0] = aFunctionForScreenWidth();
 var screen[1] = aFunctionForScreenHeight();
 // osv... 

 // kanske man sedan kan spara ned det med någon get/post funktion (ajaxstil)
 saveEntry(ref, screen);
}

Det är bara en tanke .. så en Js-fil som samlar in all info du vill åt, sedan kallar den på en funktion som anropar en asp, php, or what ever sida via ajax-typ-anrop.

Men vad som är "Best Practise", det vette tusan.

Fredde MannenMedlem sedan nov. 20013 498 inlägg
#14

Så saveEntry skulle kunna bli som följande:

function saveEntry(var1, var2)
var http = false;

if(navigator.appName == "Microsoft Internet Explorer") {
  http = new ActiveXObject("Microsoft.XMLHTTP");
} else {
  http = new XMLHttpRequest();
}

var q = "?var1="+var1+"&var2a="+var2[0]+"&var2b="+var2[1]+"";
var ok = "";
http.open("GET", "page.asp" + q);
http.onreadystatechange=function() {
  if(http.readyState == 4) {
    ok = http.responseText;
  }
}

http.send(null);

return ok; 
}

Kanske! :OO

colioneMedlem sedan juni 20013 386 inlägg
#15

escape() != bra för urler.
encodeURIComponent() == bra för urler.

EclipseMedlem sedan juli 20003 741 inlägg
#16

Tack, tack! Nu ser min kod ut så här:

<script src="http://www.server.se/imgpwd/session.js" type="text/javascript">
</script>
<script type="text/javascript">
tracker();
</script>
function tracker() {
http.open("GET", "http://www.server.se/imgpwd/session.asp?referrer=" + encodeURIComponent((document.referrer) ? document.referrer : '') );
}

*****
OK, detta fungerar givetvis inte, det är därför jag postar.

Om det är möjligt att skippa all hantering av data i JavaScript skulle jag vara
glad, om inte annat för jag tycker det är svårt... Jag är duktigare på asp än på
javascript! :-)

spangoMedlem sedan juni 20006 147 inlägg
#17

Pop quiz: Vad är http för något? Du har glömt att kopiera merparten av Freddes kod (som iofs är trasig). Sen är det också värt att komma ihåg att script bara får göra XmlHttp-anrop mot samma server som sidan de ligger på kom ifrån.

Eller förresten... bara använd Image-hacket istället.

EclipseMedlem sedan juli 20003 741 inlägg
#18

Tack! Som sagt, jag är ingen klippa på JavaScript...

Även när man ropar på en sida på samma server tror jag inte det fungerar att ropa på sidan.

Min kod nu skriver bara en post i databasen, koden är i skrivande stund inte relaterad till den information som eventuellt skickas.

Jag är alltså inte så duktig på JavaScript...

EclipseMedlem sedan juli 20003 741 inlägg
#19

http://www.google-analytics.com/urchin.js

Jag har studerat denna filen utan att direkt lyckats förstå NÄR saker hamnar i databasen!

På slutet finns ett anrop, tredje funktionen bakifrån. Kan det vara nåt att satsa på!?

Fredde MannenMedlem sedan nov. 20013 498 inlägg
#20

Hmm..

Den här tanken då:


// typ.. 
var img = new Image(); 
img.src = "http://www.domain.se/a-image-file.asp?var=something&var1=something&var3=something";

// mer kod.. som jag inte kommer på nu..

Alltså man gör en preload av bilderna så att säga, men man visar dem aldrig för
användaren... kan det funka???

// red.. det funkar..

prövade nyss med en denna kod:

<script type="text/javascript">
window.onload = function() {
	var img = new Image();
	img.src = "http://localhost/test.asp?test=tihi";

}
</script>
Genererad på 400 ms · cache AV · v20260730165559-full.f96bc7eb