Avatar billede blaasvaer Nybegynder
29. august 2001 - 14:33 Der er 14 kommentarer og
1 løsning

Undefined?

Jeg kan ikke fremprovokere et \"undefined\" fra den første test i nedenstående ... selvom jeg skriver Response.Write(Request.Querystring(\"Database\")), som ganske rigtigt returnerer \"undefined\". Hvordan kan det være? Jeg har også prøvet at sætte undefined i \"\"! Stadig ingen effekt!?

if (Request.Querystring(\"Database\") == undefined ||
Request.Querystring(\"Database\") == \"\") ... etc!
Avatar billede blaasvaer Nybegynder
29. august 2001 - 14:34 #1
Lidt mere info:

Jeg kalder index.asp både med og uden ?Database=

Og vil ha\' den til at gøre noget bestemt hvis Database er enten \"\" eller undefined ...
Avatar billede roenving Novice
29. august 2001 - 14:36 #2
Er det ikke fordi du mangler dine ASP/PHP-tags ?
Altså:

if (<?Request.Querystring(\"Database\")?> == undefined || <?Request.Querystring(\"Database\")?> == \"\")

hth
jes
Avatar billede nute Nybegynder
29. august 2001 - 14:36 #3
kan du ikke bare skrive:

if( LEN(request.querystring(\"Database\") > 0 ) then

else

end if

/nute
Avatar billede blaasvaer Nybegynder
29. august 2001 - 14:45 #4
Det hele ligger i <%%>-tags (server-side javascript, det var bare for ikke at komme op med hele koden).

Men det ser ud til at ha\' løst sig selv, ved at sætte != i stedet for ==. Ikke at det gi\'r nogen mening overhovedet. For mig at se, er det omvendt logik ... se nedenstående. Men forklar mig gerne andet hvis du kan se problemet ...

if (Request.Querystring(\"Database\") != undefined || Request.Querystring(\"Database\") == \"\"){
    Response.Write(\"No DB: \" + Request.Querystring(\"Database\"));
}else{
    Response.Write(\"DB: \" + Request.Querystring(\"Database\"));
}
Avatar billede blaasvaer Nybegynder
29. august 2001 - 14:48 #5
Der var jeg vist lidt for hurtig ... og omvendt logik duer ikke. Jeg havde ikke lige refreshed min side. Så nu virker det ikke igen, som det skal (øh, jo ikke skal!)
Avatar billede jakoba Nybegynder
29. august 2001 - 14:59 #6
undefined er ikke et navn, det skal angives som tekststreng:

if (Request.Querystring(\"Database\") == \'undefined\' ||
Request.Querystring(\"Database\") == \"\") ... etc!
Avatar billede jakoba Nybegynder
29. august 2001 - 15:02 #7
Men vil ASP funktionen  Querystring(...)  nogensinde returnere det?
Det ser lidt ud somom du blander ASP (på serveren) og javascript (hos brugeren) sammen.
Avatar billede blaasvaer Nybegynder
29. august 2001 - 15:03 #8
Har jeg også prøvet (som skrevet både \'undefined\' og \"undefined\"), men det viker heller ikke!?
Avatar billede jakoba Nybegynder
29. august 2001 - 15:07 #9
i head:
<script language=\'javascript\'>

if ( typeof( olsen ) == \'undefined\' )
    alert(\"alert 1: olsen findes ikke\");
else
    alert(\"alert 1: olsen findes.\");

var olsen = \'noget\';

if ( typeof( olsen ) == \'undefined\' )
    alert(\"alert 2: olsen findes ikke\");
else
    alert(\"alert 2: olsen findes.\");

</script>
Avatar billede jakoba Nybegynder
29. august 2001 - 15:15 #10
Ups. det jeg sagde var galt.  undefined kan bruges som navn (uden citationstegn).

Men det kan kun relatere til variable. funktioner returnerer en værdi og hvad en given funktion end returnerer er det noget, ikke undefined.

fra: http://developer.netscape.com/docs/manuals/js/client/jsref/index.htm
      \"Client-Side JavaScript Reference v1.3\"

The value undefined.
Core property
Implemented in    JavaScript 1.3
ECMA version      ECMA-262

Syntax
  undefined

Description
    undefined is a top-level property and is not associated with any
object.
    A variable that has not been assigned a value is of type undefined. A method or statement also returns undefined if the variable that is being evaluated does not have an assigned value.
    You can use undefined to determine whether a variable has a value. In the following code, the variable x is not defined, and the if statement evaluates to true.

var x
if(x == undefined) {
  // these statements execute
}

undefined is also a primitive value.
Avatar billede blaasvaer Nybegynder
29. august 2001 - 16:03 #11
Hér er koden, som driller. Jeg har også prøvet typeof(Request.Querystring(\"Database\")), - virker ikke!

Jeg har 3 scenarier:

1: http://url/index.asp
2: http://url/index.asp?Database=
3: http://url/index.asp?Database=DBNavn

1: Burde gi\' \"undefined\", \'undefined\' el. undefined
2: Gi\'r \"\" - virker
3: Virker

<%
if (Request.Querystring(\"Database\") == undefined || Request.Querystring(\"Database\") == \"\"){
    Response.Write(\"No DB\");
}else{
    Response.Write(\"DB\");
}
%>
Avatar billede jakoba Nybegynder
29. august 2001 - 16:07 #12
blaasvaer >> Det du spørger om er IKKE javascript. Det er ASP.

Så lad være at tage hensyn til mine udtalelser on \'undefined\' de handler om en anden definition af ordet der kun gælder i Javascript.
Avatar billede blaasvaer Nybegynder
29. august 2001 - 18:29 #13
Ja, ASP er et \'begreb\' og ikke et \'sprog\'. Det er så op til den enkelte, at vælge hvilket sprog man nu har det bedst med. De fleste vælger VBScript, men jeg foretrækker Javascript, da det mest af alt ligner C++.
Jeg skulle mene, at Javascript i sammenhæng med ASP også har en definition på undefined, når noget ikke-defineret bliver returneret. Hvordan jeg lige knækker den aner jeg til gengæld ikke.
Avatar billede roenving Novice
29. august 2001 - 19:17 #14
Det kan være at du bare skal nøjes med:

if (Request.Querystring(\"Database\") || Request.Querystring(\"Database\") == \"\"){

hth
jes
Avatar billede blaasvaer Nybegynder
29. august 2001 - 19:37 #15
Jeg har gjort følgende:

var db = Request.Querystring(\"Database\");

Det har gjort, at jeg nu kan teste db for \"\" eller \"undefined\". Så ergo, skal der konverteres til streng INDEN sammenligning ...
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