Avatar billede mick Nybegynder
27. april 2000 - 10:00 Der er 18 kommentarer og
1 løsning

Fejl i scrip i Netscape

Jeg har følgende asp-fil, med lidt JS også. Det hele virker fint i IE, men i Netscape virker det ikke :

--------------------------------------
<body bgcolor="#ffcc00">
<%
Connection = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("varer.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open Connection

Sql = "SELECT * FROM varegrupper ORDER BY id"
Set rs = Conn.execute( Sql )

%>
<html>
<head>
<script language="JavaScript">
<%
do until rs.eof
response.write "g" & rs("id") & "=" & "'" & rs("Emnewebside") & "'" & VbCrLf
rs.MoveNext
x = x + 1
loop
rs.MoveFirst
%>




function def()
{

<%
do until rs.eof
response.write "if (document.forms.form.sted.value == " & "'g" & rs("id") & "'" & ")" & VbCrLf & "{" & VbCrLf & "side = """ & rs("Emnewebside") & """" & VbCrLf & "id = """ & rs("Varegruppe") & """" & VbCrLf & "}" & VbCrLf & VbCrLf
rs.MoveNext
loop
rs.MoveFirst
%>
}

function go()
{
parent.visvarer.location.href="visvarer.asp?varegruppe=" + id
parent.visvare.location.href=side
}
</script>
</head>
<body onload="java script:def()">

<!-- **************** Start form med undergruppe-menu *********************** -->

<form name="form">

<font size=2 face=Verdana,Arial,Helvetica><b>Velg varegruppe :</b></font>

<select name="sted" onchange="java script:def()">
<%
x = 0
do until rs.eof
%>
<option value="g<%=rs("id") %>" <%if x = 0 then response.write " selected" %>>
<%=rs("Varegruppe") %>
</option>
<%
rs.Movenext
x = x + 1
loop
%>
</select>
<input type="button" value="Vis" onclick="go()">
</form>

<!-- **************** Slutt form med undergruppe-menu *********************** -->

</body>
</html>
<%
Set rs = Nothing

Conn.close
Set Conn = Nothing
%>

---------------------

Er der nogle som ser hvad problemet er?
Avatar billede erikjacobsen Ekspert
27. april 2000 - 10:22 #1
Du skal ikke skrive

  onload="java script:def()"
  onchange="java script:def()"

men bare

  onload="def()"
  onchange="def()"

Avatar billede mick Nybegynder
27. april 2000 - 10:47 #2
Tak for svaret, men det virker stadigvæk ikke. Jeg har ændret

onload="java script:def()"
onchange="java script:def()"

til :

onload="def()"
onchange="def()"



Avatar billede erikjacobsen Ekspert
27. april 2000 - 10:55 #3
Ok, fint nok. Kunne du poste det JavaScript der bliver genereret, eller
sige hvad Netscape siger der er fejl?
Avatar billede mick Nybegynder
27. april 2000 - 11:01 #4
Nu er jeg ikke helt med - Hvad mener du med "det JavaScript der bliver genereret"?.

Men Netscape giver følgende fejl :
NS 4.06DK - "Error in file, line 75. ID is not defeind". Eller noget tilsvarende.

NS 4.61UK - Her står der bare "JavaScript error" i statusbaren.
Avatar billede erikjacobsen Ekspert
27. april 2000 - 11:03 #5
Jamen, så siger vi den HTML-fil med JavaScript indeni. Du kan bruge "Vis kilde"
eller hvad den nu hedder i din browser.

Nu skal du lære et godt trick: Når du i Netscape (4.5+ tror jeg), skal se fejlen,
så skriv

  java script:

i adresselinien. Så får du et vindue hvor fejlene bliver beskrevet.
Avatar billede erikjacobsen Ekspert
27. april 2000 - 11:05 #6
Hmm, hvad mener du med linien:

  parent.visvarer.location.href="visvarer.asp?varegruppe=" + id

Hvor kommer id fra (det er lidt svært at overskue...) ?
Avatar billede mick Nybegynder
27. april 2000 - 11:10 #7
OK - Men det er hele filen jeg har postet her.

id kommer fra databasen (primær nøglen). Det er ikke mig selv som har skrevet koden, og jeg forstår ikke selv så meget af den.

Kan det være muligt at linjen :
parent.visvarer.location.href="visvarer.asp?varegruppe=" + id

Skal ændres til :
parent.visvarer.location.href="visvarer.asp?varegruppe=" + rs("id")

Eller er det ikke tilladt i JS.

Tak for tipset om java script: i NS
Avatar billede erikjacobsen Ekspert
27. april 2000 - 11:14 #8
Jo, det er ASP-filen. Men den kan jeg ikke afvikle og teste. Men hvis du sender
HTML-filen, sådan som browseren ser den, kan jeg gøre mere.

Nej det er ikke rs("id") der skal stå der, får det er ASP, og du er slet ikke inde
i et tabelgennemlkøb.
Avatar billede mick Nybegynder
27. april 2000 - 11:16 #9
:-) Nu forsår jeg - sorry :

-----------------------------------
<body bgcolor="#ffcc00">

<html>
<head>
<script language="JavaScript">
g1='gpsmottakere.html'
g2='kabeler.html'
g3='plugger.html'
g4='programvare.html'
g5='bok.html'
g6='diverse.html'
g7='antenner.html'
g8='kart.html'





function def()
{

if (document.forms.form.sted.value == 'g1')
{
side = "gpsmottakere.html"
id = "GPS"
}

if (document.forms.form.sted.value == 'g2')
{
side = "kabeler.html"
id = "Garmin_Kabler"
}

if (document.forms.form.sted.value == 'g3')
{
side = "plugger.html"
id = "Plugger"
}

if (document.forms.form.sted.value == 'g4')
{
side = "programvare.html"
id = "Programvare"
}

if (document.forms.form.sted.value == 'g5')
{
side = "bok.html"
id = "Bøker"
}

if (document.forms.form.sted.value == 'g6')
{
side = "diverse.html"
id = "Diverse"
}

if (document.forms.form.sted.value == 'g7')
{
side = "antenner.html"
id = "Antenner"
}

if (document.forms.form.sted.value == 'g8')
{
side = "kart.html"
id = "Kart"
}


}

function go()
{
parent.visvarer.location.href="visvarer.asp?varegruppe=" + id
parent.visvare.location.href=side
}
</script>
</head>
<body onload="def()">

<!-- **************** Start form med undergruppe-menu *********************** -->

<form name="form">

<font size=2 face=Verdana,Arial,Helvetica><b>Velg varegruppe :</b></font>

<select name="sted" onchange="def()">

<option value="g1"  selected>
GPS
</option>

<option value="g2" >
Garmin_Kabler
</option>

<option value="g3" >
Plugger
</option>

<option value="g4" >
Programvare
</option>

<option value="g5" >
Bøker
</option>

<option value="g6" >
Diverse
</option>

<option value="g7" >
Antenner
</option>

<option value="g8" >
Kart
</option>

</select>
<input type="button" value="Vis" onclick="go()">
</form>

<!-- **************** Slutt form med undergruppe-menu *********************** -->

</body>
</html>

-----------------------------
Avatar billede erikjacobsen Ekspert
27. april 2000 - 11:25 #10
Ok, nu har jeg den. Man kan ikke bare i Netscape aflæse en selects value:

function def()
{
vvv=document.forms.form.sted.options[document.forms.form.sted.selectedIndex].value;

<%
  do until rs.eof
  response.write "if (vvv == " & "'g" & rs("id") & "'" & ")" &
  VbCrLf & "{" & VbCrLf & "side = """ & rs("Emnewebside") & """" & VbCrLf & "id = """ &
  rs("Varegruppe") & """" & VbCrLf & "}" & VbCrLf & VbCrLf
  rs.MoveNext
  loop
  rs.MoveFirst
%>
}

der er to ændringer.
Avatar billede mick Nybegynder
27. april 2000 - 11:58 #11
Jaja, der kom jeg lidt videre, mange tak for hjælpen. Men nu kom der et nytt problem. Når man har valgt et menupunkt, i filen, som du rettede, bliver man sendt til følgende fil :

----------------------------
<% session.LCID = 1030 %>
<html>
<head>
<!-- <link rel=stylesheet type="text/css" href="style.css"> -->
</head>
<body>
<body bgcolor="#ffcc00">
<%
if not request.QueryString("Varegruppe") = "" then

Connection = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("varer.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open Connection

Sql = "SELECT DISTINCT undergruppe FROM " & request.QueryString("Varegruppe")
Set rs = Conn.execute( Sql )

do until rs.eof or rs.bof

%>
<li><a href="visvare.asp?varegruppe=<%=request.QueryString("Varegruppe") %>&undergruppe=<%=rs("Undergruppe") %>" target="visvare">
<%=rs("Undergruppe") %>
</a>
<br>
<%

rs.MoveNext

loop

Set rs = Nothing

Conn.close
Set Conn = Nothing
%>
</body>
</html>
<%
else
%>
<html>
<body>
</body>
</html>
<%
end if
%>
-------------------------------
Men her svarer serveren bare med :

HTTP Error 400

400 Bad Request

Due to malformed syntax, the request could not be understood by the server. The client should not repeat the
request without modifications.

Dette sker bare i NS, ikke i EI.
Avatar billede erikjacobsen Ekspert
27. april 2000 - 12:01 #12
Ok, hvad står der i felterne rs("emneside") og rs("varegruppe"). Er det
tekster med f.eks. mellemrum i ?
Avatar billede erikjacobsen Ekspert
27. april 2000 - 12:05 #13
Hvis det er tilfældet skal du for alle felter, der skal stå i din url skrive:

  Server.URLEncode(rrs("Emnewebside"))

som laver alt det "ulovlige" om til hex-tal, f.eks. mellemrum til %20, og det
er standarden siger, der må stå !
Avatar billede mick Nybegynder
27. april 2000 - 12:10 #14
I rs("emneside") står der en url og i rs("varegruppe") et navn. Ingen mellemrum nogle steder (men en underscore _ ).
Avatar billede erikjacobsen Ekspert
27. april 2000 - 12:29 #15
Nej, men der står da ø et sted ;;-) Put du hellere sådan en urlencode rundt om.
28. april 2000 - 21:32 #16
def :-)
Avatar billede erikjacobsen Ekspert
11. maj 2000 - 10:25 #17
Har vi stadig liv i denne her ???
Avatar billede mick Nybegynder
11. maj 2000 - 10:42 #18
erikjacobsen>> Ja, beklager men jeg har haft lidt dårlig tid. Jeg fik det aldrig helt til at virke, med at skrive Server.URLEncode(rrs("Emnewebside")). Men jeg skal prøve igen senere i dag.
Avatar billede erikjacobsen Ekspert
11. maj 2000 - 10:51 #19
Det er lidt længe siden også for mig. Det vil hjælpe hvis jeg/vi kan se noget af det
køre på nettet.

En generel regel, som jeg plejer at bruge, er aldrig at skrive klartekst i URL-er, f.eks.

    http://www.nowhere.com/hentvarer.asp&varenavn=Sorte+dimser+med+hvide+knapper

men istedet for bruge det ID-felt i databasen, som man alligevel har (eller  BURDE have):

    http://www.nowhere.com/hentvarer.asp&vareid=117

(endnu engang undskyld nowhere.com - har I set deres startside??) Det er formenligt
hurtigere at finde 117, og det ser kønnere ud  -  for mig.
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