IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Redirection sur clic bouton ok d'un dialog [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Billets dans le blog
    2
    Par défaut Redirection sur clic bouton ok d'un dialog
    Bonjour,

    J'ai dans ma master un dialog pour afficher si une action s'est correctment déroulée ou non. ça ça marche bien

    Mais parfois, j'ai besoin de faire une redirection après le clic du bouton Ok

    Voici mon code

    Déclaration de la classe de retour de l'action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Public Class msgRetour
            Public Property Reussi As Boolean
            Public Property Msg As String
            Public Property UrlReturn As String
        End Class
    Master
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Master.master.vb" Inherits="Jquery.Master" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="../script/jquery-1.9.0.js" type="text/javascript"></script>
        <script src="../script/jquery-ui-1.10.0.custom.min.js" type="text/javascript"></script>
        <script src="../script/MsgResult.js" type="text/javascript"></script>
        <link href="../CSS/ui-lightness/jquery-ui-1.10.0.custom.min.css" rel="stylesheet"
            type="text/css" />
        <asp:ContentPlaceHolder ID="head" runat="server">
        </asp:ContentPlaceHolder>
        <style type="text/css">
            #checkmark
            {
                position: absolute;
                left: 0px;
                top: 10px;
                margin-right: 20px;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </div>
        </form>
        <div id="MsgBack" title="Download complete">
            <div class='subcontent-box' id='Errortitre'>
            </div>
        </div>
    </body>
    </html>
    mon fichier MsgResult.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $(function () {
        $("#MsgBack").dialog({
            autoOpen: false,
            modal: true,
            buttons: {
                Ok: function () {
                    $(this).dialog("close");
                }
            }
        });
    });
     
    function AfficheMsgRetour(Retour) {
        if (Retour.Reussi) {
            $("#Errortitre").html("<font color=green><I>" + Retour.Msg + "</I></font>");
            $('#Errortitre').append("<img id='checkmark' src='Images/clean.png' />");
            $("#MsgBack").dialog("open");
        }
        else {
            $("#Errortitre").html("<font color=red><I>" + Retour.Msg + "</I></font>");
            $('#Errortitre').append("<img id='checkmark' src='Images/critical.png' />");
            $("#MsgBack").dialog("open");
        }
     
        if (Retour.UrlReturn) {/*Retourne faux si chaine null,undefine empty,0,false ...*/
            $("#MsgBack.Ok").attr("onclick", "window.location = 'Default.aspx';");
        }
    }
    Ma page héritant de ma master
    cote serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Public Class MDPPMsgComplex
        Inherits System.Web.UI.Page
     
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Session("MaPage") = "MDPPMsgComplex.aspx"
            If Not Page.IsPostBack Then Session("MonToken") = New Guid
        End Sub
     
        <Services.WebMethod()> _
        Public Shared Function AddNewItem(ByVal name As String, ByVal surname As String, ByVal PageEncours As String, ByVal age As Integer) As Master.msgRetour
            Dim ret As New Master.msgRetour
     
            Try
                Static persons As List(Of Person)
     
                If persons Is Nothing Then persons = New List(Of Person)
                Dim Person = New Person()
                Person.Name = name
                Person.Surname = surname
                Person.Age = age
     
                persons.Add(Person)
     
                ret.Reussi = ((persons.Count Mod 2) = 0)
                If ret.Reussi Then
                    ret.Msg = "Trop fort ton Enr enregistré " & HttpContext.Current.Session("MaPage") & vbNewLine & PageEncours
                    ret.UrlReturn = "Default.aspx"
                Else
                    ret.Msg = "Oups ! Erreur enr non enregistré"
                End If
     
                Return ret
     
            Catch ex As Exception
                ret.Reussi = False
                ret.Msg = ex.Message
                Return ret
            End Try
     
        End Function
     
    End Class
    cote cllient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Master/Master.Master"
        CodeBehind="MDPPMsgComplex.aspx.vb" Inherits="Jquery.MDPPMsgComplex" %>
     
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
        <style type="text/css">
            label.error
            {
                font-weight: normal;
                color: red;
                text-align: left;
                padding-left: 25px;
                background: transparent url(/images/Critical.png) no-repeat scroll left;
            }
        </style>
        <script type="text/javascript">
            $(function () {
                $('.error').hide();
     
                $("#Valider").click(
                function () {
                    $('.error').hide();
     
                    var surname = $("#<%= txtSurname.ClientID %>").val();
                    var age = $("#<%= txtAge.ClientID %>").val();
     
                    var name = $("input#name").val();
                    if (name == "") {
                        $("label#name_error").show();
                        $("input#name").focus();
                        return false;
                    }
     
                    $.ajax({
                        type: "POST",
                        url: "MDPPMsgComplex.aspx/AddNewItem",
                        data: '{"name":"' + name + '", "surname":"' + surname + '", "age":' + age + ',"PageEncours":"' + document.location.href.toString() + '"}',
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (msg) {
                            AfficheMsgRetour(msg.d)
                        },
                        error: function () {
                            alert("Error! Try again...");
                        }
                    });
                    return false;
                });
            });
        </script>
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <table>
            <tr>
                <td>
                    Name
                </td>
                <td>
                    <input type="text" name="name" id="name" size="30" value="" class="text-input" />
                    <label class="error" for="name" id="name_error">
                        This field is required.</label>
                </td>
            </tr>
            <tr>
                <td>
                    Surname
                </td>
                <td>
                    <asp:TextBox ID="txtSurname" runat="server" />
                </td>
            </tr>
            <tr>
                <td>
                    Age
                </td>
                <td>
                    <asp:TextBox ID="txtAge" runat="server" />
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <button id="Valider" >
                        Valider</button>
                </td>
            </tr>
        </table>
    </asp:Content>
    Dans mon fichier MsgResult, j'essai d'atteindre le boutton 'Ok'. Mais en fait en cliquant dessus je ne fait que fermer le dialog et je n'ai pas de redirection

  2. #2
    Membre éprouvé
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Billets dans le blog
    2
    Par défaut
    la seule solution trouvé est de réécrire ma modal
    dans mon fichier js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function AfficheMsgRetour(Retour) {
        if (Retour.Reussi) {
            $("#Errortitre").html("<font color=green><I>" + Retour.Msg + "</I></font>");
            $('#Errortitre').append("<img id='checkmark' src='Images/clean.png' />");
            $("#MsgBack").dialog("open");
        }
        else {
            $("#Errortitre").html("<font color=red><I>" + Retour.Msg + "</I></font>");
            $('#Errortitre').append("<img id='checkmark' src='Images/critical.png' />");
            $("#MsgBack").dialog("open");
        }
     
        if (Retour.UrlReturn) {/*Retourne faux si chaine null,undefine empty,0,false ...*/
            $("#MsgBack").dialog({
                autoOpen: false,
                modal: true,
                buttons: {
                    Ok: function () {
                        $(this).dialog("close");
                        window.location = 'Default.aspx';
                    }
                }
            });
        }
    }
    Peut-être y-a-t-il plus fin?

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ben non... c'est précisément le but du callback lié au bouton...

    D'autre part, tu serais gentil de lire et respecter Important : Les règles incontournables d'utilisation de ce forum, notamment en ce qui concerne le fait de poster le code HTML généré et non le code serveur (inutile dans la cadre de JavaScript qui s'exécute par rapport au code HTML).
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre éprouvé
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Billets dans le blog
    2
    Par défaut
    certes, mais si je veux que quelqu'un se mette dans les mêmes conditions que moi ....
    Surtout que les parties les plus intéressantes et utiles dans ma question ... sont en javascript;

    Mais bon j'essaierai d'y penser

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Ouverture de plusieurs interfaces sur clic bouton
    Par hi2238 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 10/04/2012, 14h38
  2. loading gif sur clic bouton submit
    Par Invité dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 25/05/2011, 21h12
  3. Erreur avec Call() sur clic bouton
    Par ClaireDu45 dans le forum Composants graphiques
    Réponses: 22
    Dernier message: 08/02/2011, 18h35
  4. affichage text sur clic bouton + condition
    Par gazelle dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/02/2009, 16h36
  5. Modifier requête sur clic bouton
    Par maxime350 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/04/2008, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo