Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Passare parametri (fra cui spazi) in window.open

    Salve a tutti, sto diventando matto con una cosa sicuramente banale.
    Devo aprire una pop-up passando dei parametri da una pagina ASP, che possono contenere spazi.
    Se arrivo a scrivere l'html così :

    <button onclick=window.open("lista.asp?dati=c e ","xxx")>Stampa</button>

    ottengo un errore di "costante string senza terminazione".

    Come faccio a passare degli spazi ???

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    In uno script della Head:

    function apri(){
    var sel = "dati=c e ";
    sel = escape(sel);
    window.open("lista.asp?"+sel,"xxx");
    }

    Il bottone:
    <button value="Stampa" onclick="apri();" />

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Quindi devo per forza fare uno script a parte ?
    Il problema è che nell'esempio ho semplificato il mio problema, ma in realtà i parametri da passare sono molti, e ottenuti da varie select su un db.
    In pratica usando il suggerimento, dovrei fare qualcosa del genere :

    <button value="Stampa" onclick="apri(<%par1%>,<%par2%>,<%par3%>);" />

    però cosa succede se ad esempio par1 ha dentro degli spazi ?

    Ultima domanda : cosa fa la funzione escape() ?

    Grazie e ciao !

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Intanto ti passo questo link che e` un reference per JS.

    escape() codifica una stringa in modo che non contenga caratteri che non possono passare attraverso la rete (spazi, virgolette, parentesi, ...). Per verficare puoi fare:

    var sel = "dati=c e ";
    alert (sel);
    sel = escape(sel);
    alert (sel);

    Sul server cui passi i parametri ci sara` un programma unescape() che esegue il fitro inverso. ASP lo fa automaticamente.

    ---
    Occhio alla sintassi: se i parametri sono stringhe devono passare racchiuse tra apici:
    <button value="Stampa" onclick="apri('<%par1%>', '<%par2%>', '<%par3%>' );" />

    Dentro la funzione dovrai metterci i vari escape(), oppure puoi passare i valori gia` trasformati:

    <button value="Stampa" onclick="apri(escape('<%par1%>'), escape('<%par2%>'), escape('<%par3%>') );" />


    In realta` lo script a parte (la funzione da includere nella head) non e` necessario, ma semplifica la vita (specie se ci sono piu` di due ordini di virgolette/apici), altrimenti rischi di perderti (non il computer, noi umani con i nostri limiti ci perdiamo).

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Dunque Michele, innanzitutto ti ringrazio per il link che ho già messo fra i preferiti.
    Ho provato e capito il significato della funzione ESCAPE.
    Adesso infatti con gli spazi all'interno della stringa funziona bene, ma mi da ancora lo stesso errore se sempre all'interno della stringa sono presenti degli apici singoli (ad esempio per l'apostrofo).

    La mia funzione ora è questa

    Nella head :
    function failista(view,SearchWhere,SearchFor){
    window.open("lista.asp?format=list&view="+view+"&S earchWhere="+SearchWhere+"&SearchFor="+SearchFor," xxx","width=700,height=500");
    }

    E per richiamarla :
    <button class="inputSubmit" onclick="failista(escape('<%=request("view")%>'),e scape('<%=request("SearchWhere")%>'),escape('<%=re quest("SearchFor")%>'));">Stampa lista Clienti</button>

    Se ad esempio SearchFor è valorizzato con dell'orto l'apice viene interpretato come la fine del precedente e mi da l'errore sulla vera chiusura presente dopo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Il problema e` a monte: infatti l'apice lo usi come delimitatore di stringa. Se nella tua stringa non ci sono virgolette, puoi usare queste come delimitatori:

    onclick="failista(escape(\"<%=request("view")%>\") ,esc... "

    Nota che prima delle virgolette esterne nonc'e` il backspace, mentre c'e` prima di quelle interne.

    Le virgoeltte di ASP invece vanno lasciate cosi` (vengon interpretate dal server).

    Nota che non conosco ASP, per cui le virgolette non ASP potrebbe essere necessario raddoppiarle.

    Controlla sempre cosa arriva nel browser, che sia codice HTML/JS corretto.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Ci sono, ho risolto facendo una replace in ASP della virgoletta semplice con la barra \ + la virgoletta semplice.

    In pratica
    escape('<%=request("SearchFor")%>')

    diventa
    escape('<%=replace(request("SearchFor"), "'", "\'")%>')

    Così funziona !
    Grazie ancora Michele, e ciao !

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.