Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542

    richiamo function vb.net con ajax

    ciao a tutti,
    in una pagina .aspx ho questo script js semplice semplice (un test)
    Codice PHP:
                $(function () {                $.ajax({                    type"POST",                    url"Crud.aspx/GetData",                    data'{}',                    asyncfalse,                    contentType"application/json; charset=utf-8",                    dataType"json",                    success: function (response) {                        alert(response.d);                     },                    error: function () {                        alert("Errore");                    }                });            }); 
    lato server nel CodeBehind della pagina ho la function shared GetData che restituisce una stringa:
    Public Shared Function GetData() As String
    Return "Ciao"
    End Function

    la funzione vine chiamata sul mio evento e non va in errore ma alert(response,d) mi da sempre undefined

    se guardo nella finestra di output di visual studio ho un errore 401 (sembrerebbe errore di autorizzazione)
    ..."success":true,"responseCode":"401","url":"http ://localhost:56128/Crud.aspx/GetData","httpMethod":"POST","properties":{"Develo perMode":"true"}}}}


    ho provato anche a mettere nella funzione vb la direttiva
    <System.Web.Services.WebMethod()>
    ma non riesco a vedere l'alert della stringa ciao

    Qualcuno + esperto sa dirmi come risolvere?

    Grazie
    Guidino

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542
    scusate,
    riposto la funzione js perchè si legge male

    codice:
                $(function () {
                    $.ajax({
                        type: "POST",
                        url: "Crud.aspx/GetData",
                        data: '{}',
                        async: false,
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (response) {
                            alert(response.d);
                        },
                        error: function () {
                            alert("fail");
                        }
                    });
                });
    Guidino

  3. #3
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Ciao,
    sicuro che non ci sia una qualche forma di autenticazione? che tipo di progetto è?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542
    E' un progetto di test con una sola pagina.
    Volevo provare una chiamata ajax ma niente.
    Nessuna idea su 401 ?
    Guidino

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Così ti funziona?

    codice:
    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
        <System.Web.Services.WebMethod()>
        Public Shared Function GetData() As String
            Return "Ciao"
        End Function
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="../js/jquery/jquery-min.js" type="text/javascript"></script>
        <script language="javascript" type="text/javascript">
    // <![CDATA[
    
    function Button1_onclick()
    {
        $.ajax({
            type: "POST",
            url: "prova.aspx/GetData",
            data: '{}',
            async: false,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                alert(response.d);
            },
            error: function () {
                alert("fail");
            }
        });
    
    }
    
    // ]]>
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <h1>PROVA</h1>
            <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
        </div>
        </form>
    </body>
    </html>
    Pietro

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    chiedo venia, a causa di un bug non posso modificare la funzione nel primo post..

  7. #7

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Purtroppo è una cosa vecchia che ho in archivio e davvero non ricordo
    Pietro

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    ho provato il tuo esempio, a me funziona, a parte quel <response.d> fa correttamente la chiamata

  10. #10
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Quote Originariamente inviata da djciko Visualizza il messaggio
    @pietro:

    cosa e'

    response.d

    ?
    é un sistema di sicurezza che implementano i servizi di script ajax asp.net contro gli attacchi CSRF.
    Fa in modo che la risposta sia sempre un oggetto json ( {d:[...]} al posto di [...]), in quanto alcuni vecchi browser soffrono di un problema che fa si che la risposta possa utilizzata tramite tag script (cross-domain) eseguiti con le credenziali del client.
    In pratica il tuo client potrebbe entrare nel tuo sito ed autenticarsi per richiedere una risorsa dal tuo servizio (solo GET). In seguito, mentre ha ancora attiva l'autenticazione, naviga ed incappa nel sito di un male intenzionato che nella sua pagina potrebbe mettere un tag script con l'url della risorsa nel tuo sito (tramite appunto chiamata GET al servizio che restituisce il json come array) e a quel punto, essendo ancora autenticato, la pagina web eseguita sul browser del tuo ex client ottiene i dati dal tuo sito (usa ancora le tue credenziali ottenute precedentemente), il passo successivo sarebbe quelle di inviare dal browser tramite ad esempio ajax i dati ottenuti verso il server del male intenzionato senza che tu faccia nulla (compreso accorgertene...).

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.