36 messaggi dal 26 maggio 2017
Buongiorno,
ho creato il codice che vi mostrerò, molto semplice per ora, dove vorrei passare dei valori di un form contatti classico ad una "Public Shared Function" che ho inserito all'interno del code behind della mia pagina ".aspx".

ora qui sotto vi faccio vedere il codice


--------------per quanto riguarda il code behind:

<System.Web.Services.WebMethod()>
    Public Shared Function GetCurrentTime(ByVal name As String) As String

        Return "Hello " & name & Environment.NewLine & "The Current Time is: " & DateTime.Now.ToString()

    End Function



---------------per quanto riguarda il front end:


    <script src="scripts_json_form_contatti/jquery-1.3.2.min.js"></script>
<script>
        $(document).ready(function () {
            
    
            //After Form Submitted Validation
            $("#contact_submitRIG button").click(function (event) {

                //VALORE DEL CAMPO TESTO  RAGIONE SOCIALE
                var txtRagSocRIG = $('#txtRagSocRIG').val(); 

                $.ajax({
                    type: 'post',
                    url: 'default.aspx/GetCurrentTime',
                    data: "nome=" + $('#txtRagSocRIG').val() ,
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (response) {
                                    alert(response.d);
                                },
                    failure: function(response) {
                        alert(response.d);
                    }
                });


            });
      
      
      
        });

</script>

<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>


<asp:Button ID="btnRIG" runat="server" Text="Fill Form in Popup"   />

<ajaxToolkit:ModalPopupExtender ID="mp1" runat="server" PopupControlID="Panl1" TargetControlID="btnRIG"
    CancelControlID="btnRIG2" BackgroundCssClass="Background" BehaviorID="Panl1"  >
</ajaxToolkit:ModalPopupExtender>


<asp:Panel ID="Panl1" runat="server" CssClass="Popup" style = "display:none; border-radius: 10px"  ScrollBars="Auto"  >

<table id="tblTr" style="width:520px; padding: 0px; table-layout: fixed; color: #333333">

    <tr id="trtxtRagSocRIG">
        <td>Ragione Sociale:<asp:TextBox ID="txtRagSocRIG" runat="server" ValidationGroup="inviaRIG"> </asp:TextBox></td>
    </tr>

    <tr>
        <td id="contact_submitRIG"><button type="submit" >Invia richiesta</button></td>
    </tr>


</table>    
</asp:Panel>
    </form>
</body>




Modificato da Pietro75 il 30 maggio 2018 14.36 - Ora se non riesco a passare il valore alla mia funzione "GetCurrentTime" per poterla gestire.
io oltretutto vorrei passare una serie di valori concatenati tanto da recuperarli ed inviare una mail.

se sbaglio qualcosa o sto perseguendo una strada sbagliata basta che me lo facciate notare ed io cambio strada subito!.

Grazie!
Modificato da Pietro75 il 30 maggio 2018 15.38 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
dato che devi passare più valori, creati una classe con varie proprietà al suo interno. Dagli un nome che vuoi tu, ad esempio "RichiestaInvioEmail" e poi la usi come parametro della funzione shared.
Public Shared Function InviaEmail(ByVal richiesta As RichiestaInvioEmail) As String
  'Qui usi le proprietà dell'oggetto richiesta
End Function


Lato client, invii la richiesta così.
//Credo l'oggetto della richiesta
//Le proprietà "Nome" ed "Email" devono esistere nella classe che hai creato lato server
var richiesta = { Nome: $('#txtRagSocRIG').val(), Email: $('#txtEmail').val() };
$.ajax({
                    type: 'post',
                    url: 'default.aspx/InviaEmail',
                    data: JSON.stringify(richiesta),
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (response) {
                                    alert(response.d);
                                },
                    failure: function(response) {
                        alert(response.d);
                    }
                });


Nota che ho usato JSON.stringify per creare una stringa JSON. Tu avevi fatto così:
data: "nome=" + $('#txtRagSocRIG').val() ,

Questo non è json, non avrebbe funzionato.

ciao,
Moreno

Enjoy learning and just keep making
36 messaggi dal 26 maggio 2017
Provo subito e ti dico!
Grazie!
256 messaggi dal 30 novembre 2004
Ovviamente nella funzione vb.net devi deserializzare il json.

https://www.newtonsoft.com/json
36 messaggi dal 26 maggio 2017
Ho cerato la classe shared qui sotto come da tuo suggerimento:
    <System.Web.Services.WebMethod()>
    Public Shared Function InviaEmail(ByVal richiesta As RichiestaInvioEmail) As String
        'Qui usi le proprietà dell'oggetto richiesta


        Return "Hello " & richiesta.TURIG & Environment.NewLine & "The Current Time is: " & DateTime.Now.ToString()

    End Function


l'oggetto ajax ora è questo:

var stringa_valori_post = { TURIG: $('#<%= rdTipoUtenteRIG.ClientID %>').find('input:checked').val() } ;
                $.ajax({
                    type: 'post',
                    url: 'default.aspx/InviaEmail',
                    data: JSON.stringify(stringa_valori_post) ,
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (response) {
                                    alert(response.d);
                                },
                    failure: function(response) {
                        alert(response.d);
                    }
                });



ho creato una classe con varie proprietà al suo interno tipo TURIG

Public Class RichiestaInvioEmail

    Private _TURIG As String


    Public Property TURIG() As String
        Get
            Return _TURIG
        End Get
        Set(ByVal value As String)
            _TURIG = value
        End Set
    End Property

End Class


ORA LA "Shared Function InviaEmail" vede l'oggetto "RichiestaInvioEmail" e nello specifici le proprietà di "richiesta" (richiesta.TURIG)

Però ajax quando cerca la funzione "InviaEmail" in debug non la trova! e quindi non riesco a verificare il tutto in debug.

Ho sbagliato qualcosa?

Grazie!


Ho letto solo in ultimo il suggerimento della deserializzazione!
comunque non ci arrivo neanche alla funzione vb quindi !

ho il problema comunque!

Grazie ancora!
Modificato da Pietro75 il 31 maggio 2018 09.54 -
Modificato da Pietro75 il 31 maggio 2018 10.02 -
256 messaggi dal 30 novembre 2004
In debug non arrivi alla shared?
Fai il debug da browser per vedere che il js funziona.
F12 e console
36 messaggi dal 26 maggio 2017
la console di chrome è vuota!
Bo!!

non arrivo alla shared
Modificato da Pietro75 il 31 maggio 2018 12.14 -
256 messaggi dal 30 novembre 2004
stai sbagliando qualcosa... forse.
Se hai visual studio 2017 puoi agganciare anche il debug al js da visual studio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.