[JSP/Javascript] JSP aanroepen vanuit Javascript?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Teeno
  • Registratie: Juni 2007
  • Laatst online: 08:16
Beste mensen, Ik ben vorige week eens begonnen met een testproject opzetten in JSP, omdat ik 0,0 ervaring had met webapplicaties maar al een aantal jaar met JAVA werk leek JSP mij de beste keuze.

In principe gaat alles lekker, alleen zit ik nu met 1 probleem.

HTML:
1
<td align="left"><input type="button" value="Download" onclick="check();">&nbsp;(<%=Math.round(res.getDouble("file_sizeBytes") / 1024 / 1024)%> MB)</td>

Het gaat om een button waarmee een bestand gedownload kan worden. Ik wil vooraf nog wel een bevestiging hebben voordat het bestand wordt aangeboden.

HTML:
1
2
3
4
5
6
7
8
<script>
            function check()
            {
                if (confirm("Wil je verder gaan met deze actie?")) {
                    // Ga hier dan downloaden of code aanroepen die dat doet
                }
            }
        </script>


Wat bijvoorbeeld wel zou werken is het volgende
HTML:
1
onclick="download.jsp?id=23"

Als ik geen javascript zou gebruiken is het aanmaken van een tijdelijke session attribute ook een optie, maar ik betwijfel of dit de beste oplossing is. Tevens is het wel de bedoeling dat die confirmbox naar voren komt, en dit kan niet is JSP. (Het verhaal van serverside en clientside snap ik inmiddels).

Wat ik op Google nog heb gevonden is een tip om een AJAX methode te implementeren, maar hier wilde ik me nog even niet aan wagen als het nog niet hoeft.

Alvast bedankt voor jullie tijd.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je weet wat je target wordt (download.jsp?id=23) en daar wil je naar verwijzen op regel 5 in je code?

Los van 't feit dat je functie te generiek is (en dus niet gebruikt kan worden voor verschillende downloads), kan je de browser toch "doorsturen" naar die download.jsp?id=23?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Teeno
  • Registratie: Juni 2007
  • Laatst online: 08:16
BtM909 schreef op dinsdag 24 februari 2009 @ 11:00:
Je weet wat je target wordt (download.jsp?id=23) en daar wil je naar verwijzen op regel 5 in je code?

Los van 't feit dat je functie te generiek is (en dus niet gebruikt kan worden voor verschillende downloads), kan je de browser toch "doorsturen" naar die download.jsp?id=23?
Er wordt in de onclick() een downloadcode meegeparametert naar de check(), tenminste daar ben ik nu mee aan het vogelen :). Neem aan dat je dat bedoelde?

Zal een kijken of ik een redirect in de javascript code kan plaatsen, die had ik nog niet geprobeerd.

--edit
HTML:
1
<td align="left"><input type="button" value="Download" onclick="check(<%=res.getString("file_code")%>);">&nbsp;(<%=Math.round(res.getDouble("file_sizeBytes") / 1024 / 1024)%> MB)</td>

en
HTML:
1
2
3
4
5
6
function check(code)
            {
                if (confirm("Wil je verder gaan met deze actie?")) {
                    window.location("download.jsp?id="+code);
                }
            }

Geven geen errors, als ik op de knop klik gebeurt er echter niets... zie ik iets over het hoofd?

[ Voor 29% gewijzigd door Teeno op 24-02-2009 11:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Dit kan makkelijker.
In mijn ogen kan je beter een hidden input field binnen je form per knop zetten en deze als form action="download.jsp" laten meegeven. Vanuit post variabelen kan je dan binnen je download.jsp de code uitlezen en het juiste bestand laten downloaden.

confirm geeft al een boolean terug dus ook je javascript kan je vereenvoudigen door de onsubmit property van je form.
HTML:
1
2
3
4
<form name='frm' action='download.jsp' method='post' onsubmit="return confirm('Wil je verder gaan met deze actie?');">
    <input name='code' type='hidden' value='<%=code%>'>
    <input type="submit" value="Download">
</form>


in download.jsp kan je de post variabele code dan gebruiken om het juiste bestand te downloaden.
Als je dan op de knop drukt komt de vraag. bij annuleren gebeurd er niets, bij bevestigen wordt het form verstuurd.

succes

Acties:
  • 0 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Laatst online: 19:52

Standeman

Prutser 1e klasse

code:
1
onclick="check(<%=res.getString("file_code")%>);"

Komt door je quotes denk ik. Probeer eens
code:
1
onclick="check(<%=res.getString('file_code')%>);"

The ships hung in the sky in much the same way that bricks don’t.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17:18

Janoz

Moderator Devschuur®

!litemod

Standeman schreef op dinsdag 24 februari 2009 @ 11:52:
code:
1
onclick="check(<%=res.getString("file_code")%>);"

Komt door je quotes denk ik. Probeer eens
code:
1
onclick="check(<%=res.getString('file_code')%>);"
Dat denk ik niet. De jsp code wordt op de server geinterpreteerd terwijl de clientcode op de client wordt geevalueerd. De quotes zitten elkaar dus niet in de weg.

Daarnaast zal de enkele quote een fout geven aangezien de enkele quote bij java aangeeft dat het om een enkel teken gaat ipv een string.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Je ziet volgens mij over het hoofd dat je onclick functie true of false moet retourneren. Bij true wordt de link gevolgd, bij false niet. Alle geneuzel over JSP heeft hier niets mee te maken (dat kan ook niet, aangezien die JSP - zoals Janoz hierboven aangeeft - al op de server is uitgevoerd).

[ Voor 37% gewijzigd door Herko_ter_Horst op 24-02-2009 12:08 ]

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

  • Teeno
  • Registratie: Juni 2007
  • Laatst online: 08:16
Verwijderd schreef op dinsdag 24 februari 2009 @ 11:52:
Dit kan makkelijker.
In mijn ogen kan je beter een hidden input field binnen je form per knop zetten en deze als form action="download.jsp" laten meegeven. Vanuit post variabelen kan je dan binnen je download.jsp de code uitlezen en het juiste bestand laten downloaden.

confirm geeft al een boolean terug dus ook je javascript kan je vereenvoudigen door de onsubmit property van je form.
HTML:
1
2
3
4
<form name='frm' action='download.jsp' method='post' onsubmit="return confirm('Wil je verder gaan met deze actie?');">
    <input name='code' type='hidden' value='<%=code%>'>
    <input type="submit" value="Download">
</form>


in download.jsp kan je de post variabele code dan gebruiken om het juiste bestand te downloaden.
Als je dan op de knop drukt komt de vraag. bij annuleren gebeurd er niets, bij bevestigen wordt het form verstuurd.

succes
Super, hierdoor werkt het nu _/-\o_

@Standeman, die quotes dienen zo te blijven omdat ik een String aanroep, enkele quotes willen een char.

Acties:
  • 0 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Laatst online: 19:52

Standeman

Prutser 1e klasse

Janoz schreef op dinsdag 24 februari 2009 @ 12:03:
[...]

Dat denk ik niet. De jsp code wordt op de server geinterpreteerd terwijl de clientcode op de client wordt geevalueerd. De quotes zitten elkaar dus niet in de weg.

Daarnaast zal de enkele quote een fout geven aangezien de enkele quote bij java aangeeft dat het om een enkel teken gaat ipv een string.
Ik zie het 8)7

Laten we maar zeggen dat ik nog geen koffie op had.

The ships hung in the sky in much the same way that bricks don’t.

Pagina: 1