Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585

    form submit action multiple

    Ciao a Tutti,
    ho il seguente problema:

    Ho una pagina che contiene una form con vari input type text da compilare e un campo input type=file per caricare l' immagine.

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <script type="text/javascript">

    function f_notify() {
    var answer = confirm("Save changes ?")
    if (answer) {
    document.FrontPage_Form9.action = "fb_mod.asp"
    document.FrontPage_Form9.submit();
    return true; } }

    function f_upload() {
    if (document.getElementById('file_u1').value.length > 0) {
    var reply = confirm("An update to document is ready to be done; Please confirm.")
    if (reply) {
    document.FrontPage_Form9.encoding = "multipart/form-data";
    document.FrontPage_Form9.action = "fb_upload.asp"
    document.FrontPage_Form9.submit();
    return true; } } }

    </script>
    </head>

    <body>
    <form method="POST" name="FrontPage_Form9">
    .....
    <input type="text" name="date_ca" id="date_ca" value="<%=objRS("Ca_date")%>"
    ......
    <input type="file" name="file_u1" id="file_u1" size="44">
    .....
    <button type="button" style="width:76px;" onClick="f_notify();f_upload()">Save</button>
    ....
    </body>

    Con IE se compilo sia i campi testo che il campo caricando l' immagine,
    all' atto del Save i campi testo della form vengono aggiornati e l' immagine caricata.
    (faccio uso dell' upload di Baol)

    Mentre con Google Chrome il testo non mi viene modificato ma l' immagine caricata

    mentre con FireFox e' il testo ad essere modificato ma non l' immagine, che non viene caricata.

    Singolare e' quindi il comportamento opposto dei 2 browsers....

    Come risolvere il problema ??

    Grazie mille in anticipo !!!
    Ultima modifica di betto; 02-09-2015 a 12:20

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Per logica l'unico comportamento corretto è quello di firefox lanciando la funzione f_notify() e questa a sua volta esegue un submit del form (cioè un invio del form) la funzione f_upload() non dovrebbe essere eseguita
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    mi sta anche bene .. .cmq il problema rimane: dovrei riuscire a fare eseguire entrambe le funzioni con tutti i diversi tipi di browsers
    come fare ??

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Dipende dal flusso dei dati, se puoi fare tutto contestualmente invii alla pagina asp sia il testo che l'immagine la quale prima eseguire i cambiamenti poi uploderà l'immagine tutto in unica pagina, se invece questo non è possibile prima dovrai eseguire i cambiamenti tramite ajax e solo al callback lanciare upload
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Grazie Andrea,

    oggi pensavo all' aiuto che puo' venire dall' ajax ... e' che ad ora non lo conosco proprio ...
    potresti x cortesia aiutarmi nel settaggio oppure e' una cosa lunga ...

    Grazie ancora !!

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non è difficilissimo, cercati una guida in rete e studiati come funziona ajax, senza conoscere il flusso dei dati o il suo funzionamento diventa impossibile aiutarti
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Per il momento ho fatto cosi':

    <form method="POST" name="FrontPage_Form9">
    .....
    < input type="text" name="date_ca" id="date_ca" value="<%=objRS("Ca_date")%>"
    ......
    < input type="file" name="file_u1" id="file_u1" size="44">&nbsp;
    <button type="button" onClick="f_upload();">Upload image</button>
    .....
    < button type="button" onClick="f_notify();">Save only data form</button>

    Ho creato 2 pulsanti distinti, uno per il salvataggio dei dati, l' altro per l' upload dell' immagine e funziona bene su tutti e 3 i browsers.

    E' pero' una soluzione che non mi soddisfa appieno in quanto vorrei che ci fosse un pulsante solo di salvataggio ...

    Sto guardando e provando di fare una chiamata Ajax ma x il momento sono ancora in alto mare ...


    Ho provato a sostiutire cosi' la funzione f_notify(), ma il risultato che ho avuto e' stato quello di vedere il record pulito di tutti i valori dei campi e quindi con un messaggio di errore che mi ritorna nel ricaricamento automatico della pagina

    function f_notify() {
    if (!(document.getElementById('pl').value.match(/@/))) { alert("Please, insert email address !"); }
    else {
    var answer = confirm("Save changes ?")
    if (answer) {
    var xmlhttp;
    if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); }
    else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
    xmlhttp.open("POST","fb_mod.asp?f_num="+j_num+"&f_ act="+j_act,true);
    xmlhttp.send(); } }
    }



    **************

    Contenuto della pagina f_mod.asp

    <%@ Language=VBScript %>
    <%
    Option Explicit
    Dim objConn, objRS, f2_act
    '
    f2_num = Request("f_num")
    f2_act = Request("f_act")

    '
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.ConnectionString = "DSN=9_feed.dsn"
    objConn.Open
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open "t_feed", objConn, , 3, 2
    '
    Do While Not objRS.EOF
    If Cstr(objRS("Numero"))=f2_num And Cstr(objRS("Activity"))=f2_act Then
    '
    if Len(Request.Form("date_ca"))>0 then objRS("Ca_date") = Request.Form("date_ca")
    objRS("Problem") = Request.Form("problem")
    objRS.Update
    '
    End If
    objRS.MoveNext
    Loop
    '
    %>
    <HTML>
    <BODY>
    <script>
    var j2_num="<%=f2_num%>";
    var j2_act="<%=f2_act%>";


    window.open("", "_self").close();
    window.location.href = 'fb_ins.asp?f_num='+j2_num+'&f_act='+j2_act;
    </script>
    <%
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
    %>
    </BODY>
    </HTML>
    Ultima modifica di betto; 04-09-2015 a 09:56

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Il problema l' ho risolto sia con Google Chrome che con Internet Explorer cosi':

    Sono dentro il mio frame fb_ins.asp:

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <base target="_self">

    <script type="text/javascript">

    function f_notify() {
    var answer = confirm("Save changes ?")
    if (answer) {
    var xmlhttp;
    if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); }
    else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
    xmlhttp.open("POST","fb_mod.asp",true);
    xmlhttp.send();
    window.location.href = 'fb_ins.asp';
    f_upload(); }
    }
    //
    //
    function f_upload() {
    var reply = confirm("An update image documents is ready to be done; Please confirm.")
    if (reply) {
    document.FrontPage_Form9.encoding = "multipart/form-data";
    document.FrontPage_Form9.action = "fb_upload.asp
    document.FrontPage_Form9.submit();
    return true; }
    }
    </script>
    </head>

    <body>
    <form method="POST" name="FrontPage_Form9">
    .....
    <input type="text" name="prj_nome" id="prj_nome" value="<%=objRS("Nome")%>" />
    ......
    < input type="file" name="file_u1" id="file_u1" size="44">

    <button type="button" style="width:76px;" onClick="f_notify();">Save</button>
    .....
    </form>

    Sia che cambi il testo, sia che insieme al testo carichi un' immagine il comportamento di GC e di IE e' il medesimo e funzionano entrambi bene !!

    FireFox invece non digerisce dopo la chiamata Ajax il window.location.href ed infatti in questo modo non fa niente.
    Se provo a disabilitare le righe della chiamata Ajax per fargli caricare solo l' immagine funziona,
    se invece nella funzione f_notify() commento la chiamata alla funzione f_upload() e faccio eseguire solo la chiamata Ajax di salvataggio dati, non fa nulla .... perche' ???????????????

    Grazie x l' aiuto !!!
    Ultima modifica di betto; 07-09-2015 a 16:15

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Premesso che per quanto ne so e per quanto affermi l'unico browser a funzionare correttamente è firefox (perché IE e chrome vadano sono un segreto della programmazione)
    Analizziamo la la funzione f_notify tralasciando la conferma
    codice:
    function f_notify() {
                                  var answer = confirm("Save changes ?")
                                  if (answer) {
                                                      var xmlhttp;
                                                      if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); }
                                                      else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } 
    //quando in-stanzi XMLHttpRequest non monitorizzi la chiamata xmlhttp.onreadystatechange
                                                      xmlhttp.open("POST","fb_mod.asp",true);
    //non invii dati al server  per inviare i dati devi appenderli al send e impostare un setRequestHeader
                                                       xmlhttp.send();
    //eseguendo la chiamata senza risposta questo richiamo e la funzione sottostante non dovrebbe (IE e Chrome le eseguono? Boh... non ho una risposta) essere eseguiti
                                                       window.location.href = 'fb_ins.asp';
    
                                                       f_upload(); }
    }

    * Le parole in rosso solo link esterni
    Ultima modifica di cavicchiandrea; 07-09-2015 a 19:47
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Per ottenere l' omogeneita' e la compatibilita' con i 3 browsers ho fatto cosi':

    head>
    < meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    < base target="_self">

    < script type="text/javascript">

    function f_notify() {
    var answer = confirm("Save changes ?")
    if (answer) {
    var xmlhttp;
    if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); }
    else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
    xmlhttp.open("POST","fb_mod.asp?f_num="+j_num+"&f_act="+j_act+"&f_typ="+j_typ+"&f_ nuf="+j_nuf,true);
    xmlhttp.send();
    f_upload(); }
    }
    //
    //
    function f_upload() {
    var reply = confirm("An update image documents is ready to be done; Please confirm.")
    if (reply) {
    document.FrontPage_Form9.encoding = "multipart/form-data";
    document.FrontPage_Form9.action = "fb_upload.asp
    document.FrontPage_Form9.submit();
    return true; }
    }
    < /script>
    < /head>

    < body>
    < form method="POST" name="FrontPage_Form9">
    .....
    < input type="text" name="prj_nome" id="prj_nome" value="<%=objRS("Nome")%>" />
    ......
    < input type="file" name="file_u1" id="file_u1" size="44">

    < button type="button" style="width:76px;" onClick="f_notify();">Save</button>
    .....
    < /form>

    Quindi la procedura e' molto simile a prima MA all' interno della pagina fb_mod.asp ho aggiunto la window.location.href cosi':

    <%@ Language=VBScript %>
    <%
    Option Explicit
    Dim objConn, objRS, f2_act, f2_contract, f2_nuf, f2_num, f2_typ
    '
    f2_num = Request("f_num")
    f2_act = Request("f_act")
    f2_typ = Request("f_typ")
    f2_nuf = Request("f_nuf")
    '
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.ConnectionString = "DSN=9_feed.dsn"
    objConn.Open
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open "t_feed", objConn, , 3, 2
    '
    Do While Not objRS.EOF
    If Cstr(objRS("Numero"))=f2_num And Cstr(objRS("Activity"))=f2_act And objRS("FB0"&f2_typ)="Yes" And Cstr(objRS("Nufd"))=f2_nuf Then
    '
    ....
    objRS("Nome") = Request.Form("prj_nome")
    ..........
    objRS.Update
    '
    End If
    objRS.MoveNext
    Loop
    '
    %>
    <HTML>
    <BODY>
    <script>
    var j2_num="<%=f2_num%>";
    var j2_act="<%=f2_act%>";
    var j2_typ="<%=f2_typ%>";
    var j2_nuf="<%=f2_nuf%>";

    window.open("", "_self").close();
    window.location.href = 'fb_ins.asp?f_num='+j2_num+'&f_act='+j2_act+'&f_ty p='+j2_typ+'&f_nuf='+j2_nuf;
    </script>
    <%
    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
    %>
    </BODY>
    </HTML>


    In questo modo tutto funziona ed era quello a cui volevo arrivare ...
    Ultima modifica di betto; 14-09-2015 a 15:14

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.