J'ai une fonction sur JS qui doit s'exécuter avant le codebehind, mais j'ai du mal à le récupérer. Il renverra une variable que je devrais utiliser sur le codebehind. La fonction que j'ai créée est celle-ci:

            <script type="text/javascript" >
                function returnHash() {
                    var checkout = new DirectCheckout('086F7D02A071267FEBF102EB759D9845B8B3333DFA65BC45B807F41A8525AD8D'); /* Em sandbox utilizar o construtor new DirectCheckout('SEU TOKEN PUBLICO', false); */
                    debugger;
                    var month = document.getElementById("txtDataVencUser").value;
                    var year = document.getElementById("txtDataVencUser").value;

                    var cardData = {
                        cardNumber: document.getElementById("txtNumeroCartaoUser").value,
                        holderName: document.getElementById("txtNomeCartaoUser").value,
                        securityCode: document.getElementById("txtCodSegurancaUser").value,
                        expirationMonth: month.substring(0, 2),
                        expirationYear: "20" + year.substring(3, 5)
                    };

                    checkout.getCardHash(cardData, function (cardHash) {
----------------------------> I NEED TO RETRIEVE "cardHash" VALUE IN CODEBEHIND
                    }, function (error) {
                        console.log(error);
                    });
                }
                </script>

Je ne sais pas si cette étape est correcte, mais j'utilise le onClientClick pour essayer d'exécuter le JS avant le codebehind:

<asp:Button ID="btnFinalizarCompraJunoUser" runat="server" Text="FINALIZAR COMPRA" OnClientClick="returnHash()" OnClick="btnFinalizarCompraJunoUser_Click" Visible="true" />

J'ai du mal à savoir quoi faire ensuite, quelqu'un peut-il m'aider s'il vous plaît?

0
Gabriel Manzini 19 févr. 2021 à 17:40

1 réponse

Meilleure réponse

Il existe un certain nombre de façons - peut-être autant de saveurs de crème glacée.

Mais, puisque vous allez exécuter un stub «code derrière» basé sur le clic?

Je déposerais simplement un champ caché sur la page, puis définirais simplement cette valeur en js

Alors juste en dessous de votre bouton - ajoutez un champ caché, dites comme ceci:

<form id="form1" runat="server">
        <br />

    <asp:Button ID="Button1" runat="server" Text="Button" 
        OnClientClick="myfun();return true" Width="68px"
        ClientIDMode="Static"/>

     <asp:HiddenField ID="HiddenField1" runat="server" ClientIDMode="Static" />

  </form>

<script type="text/javascript">

function myfun() {
    // do whatever - walk the dog - have fun!!!

    var f1 = document.getElementById("HiddenField1");
    f1.value = "2222";
}
</script>

Donc, ci-dessus, je viens de pousser 2222 dans le champ hidden1.

Maintenant, dans le code derrière le talon du bouton, vous pouvez le faire:

 Debug.Print("my click f1 = " & HiddenField1.Value);

Ainsi, le code derrière aura maintenant un bon vieux contrôle de jane d'avion régulier à regarder et à obtenir la valeur en question.

Donc, cela dépend du nombre de valeurs - mais utiliser un code derrière un contrôle convivial (asp.net) et définir la valeur avec le code côté client js est probablement le moins d'effort ici.

J'ai aussi bien sûr utilisé "staticID" pour ce qui précède. Si, pour une raison quelconque, vous n'aimez pas (ou ne voulez pas) utiliser staticID pour ci-dessus, alors la sélection js serait:

 var f1 = document.getElementById("<%=HiddenField1.Clientid%>");
 f1.value = cardHash;
1
Albert D. Kallal 20 févr. 2021 à 01:56