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 :

Récupération information par ajax [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 Récupération information par ajax
    Bonjour,

    Depuis ma dernière discussion j'ai progressé ...
    mais je reste bloqué depuis 2 jours sur une anerie de ma part mais je ne comprend pas ou...

    Voici mon code
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="Jquery._Default" %>
     
    <!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 id="Head1" runat="server">
        <title></title>
        <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js" type="text/javascript"></script>
        <script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.13/jquery-ui.min.js" type="text/javascript"></script>
        <link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.13/themes/redmond/jquery-ui.css"
            rel="stylesheet" type="text/css" />
        <script type="text/javascript">
            $(function () {
                $(".addNew").dialog({
                    autoOpen: false,
                    width: 300,
                    height: 300,
                    modal: true,
                    close: function (event, ui) {
                        location.reload(false);
                    },
                    buttons:
                    {
                        "Add": function () {
                            var name = $("#<%= txtName.ClientID  %>").val();
                            var surname = $("#<%= txtSurname.ClientID %>").val();
                            var age = $("#<%= txtAge.ClientID %>").val();
     
                            $.ajax({
                                type: "POST",
                                url: "Default.aspx/AddNewItem",
                                data: '{"name":"' + name + '", "surname":"' + surname + '", "age":' + age + '}',
                                contentType: "application/json; charset=utf-8",
                                dataType: "json",
                                success: function (msg) {
                                    if ( msg == true) {
                                        alert("Successfully added new item");
                                    }
                                    else {
                                        alert("t'es une buse");
                                    }
                                },
                                error: function () {
                                    alert("Error! Try again...");
                                }
                            });
                        },
                        "Cancel": function () {
                            $(this).dialog("close");
                        }
                    }
                });
     
                $("#add").click(function (event) {
                    event.preventDefault();
                    $(".addNew").dialog("open");
                });
            });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <a href="#" id="add">Add New</a>
            <div class="addNew" title="Add new Person">
                <table>
                    <tr>
                        <td>
                            Name
                        </td>
                        <td>
                            <asp:TextBox ID="txtName" runat="server" />
                        </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>
                </table>
            </div>
            <asp:Repeater ID="rptShowItems" runat="server">
                <HeaderTemplate>
                    <table>
                        <thead>
                            <tr>
                                <th>
                                    Name
                                </th>
                                <th>
                                    Surname
                                </th>
                                <th>
                                    Age
                                </th>
                            </tr>
                        </thead>
                        <tbody>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <%# Eval("Name") %>
                        </td>
                        <td>
                            <%# Eval("Surname") %>
                        </td>
                        <td>
                            <%# Eval("Age") %>
                        </td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </tbody> </table>
                </FooterTemplate>
            </asp:Repeater>
        </div>
        </form>
    </body>
    </html>
    Code asp : 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
    Imports System.Web.Services
     
    Public Class _Default
        Inherits System.Web.UI.Page
     
        <WebMethod()> _
        Public Shared Function AddNewItem(ByVal name As String, ByVal surname As String, ByVal age As Integer) As Boolean
            Try
                Dim person = New Person()
                person.Name = name
                person.Surname = surname
                person.Age = age
     
                'add your logic to insert item into database
     
                'we will always return true here, in real life, this of course can't be always true ;)
     
     
                Return True
            Catch ex As Exception
                Return False
            End Try
     
        End Function
     
    End Class
     
    Public Class Person
        Public Property Name As String
        Public Property Surname As String
        Public Property Age As Integer
    End Class

    Donc quand je clique sur le lien ADD, ma popup s'affiche, je rentre bien les param et quand je valide ça m'envoi les données dans ma webmethod.

    Si je ne mets pas les bons params, j'ai bien ajax:error qui se déclenche.
    Si je met les bons paramètres, ma méthod ajax:success fonctionne ... mais à moitié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     if ( msg == true) {
                                        alert("Successfully added new item");
                                    }
                                    else {
                                        alert("t'es une buse");
                                    }
    SAUF QUE C'EST TOUJOURS
    t'es qu'une buse qui ressort
    alors que dans mon code behind, je renvoie true...

    Que dois tester pour retrouver mon "true" ?

    Merci d'avances

  2. #2
    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
    J'ai pas l'impression que tu comprennes tout ce que tu fais...

    là, tu indiques que tu vas recevoir comme réponse une chaine formatée en JSON que jQuery devra parser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    success: function (msg) {
        if ( msg == true) {
            alert("Successfully added new item");
        }
    et là, tu demandes si la réponse vaut le booléen true...

    D'une part, un booléen n'est certainement pas un format JSON valide, mais surtout, HTTP est incapable de faire transiter des données typées ! Seul des données textuelles sont transportées.
    Bref, tu ne recevras jamais true...
    Logiquement, JavaScript va tenter de transtyper la réponse en booléen, mais comme apparemment ton code serveur ne renvoie rien comme réponse, la condition sera toujours fausse !
    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

  3. #3
    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
    Mon code serveur fait un et dans le catch Pour le datatype ... j'avoue que j'ai un peu de mal avec. Je suis en train de faire un projet test pour essayer de comprendre donc ...

  4. #4
    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
    Je me trompe peut-être parce que j'y connais rien, mais de ce que je vois, c'est uniquement la fonction qui renvoie true ou false...

    Tu as regardé dans la console (Firebug par exemple) ce que tu reçois vraiment comme réponse ?
    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

  5. #5
    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
    Merci pour ta réponse, firebug m'a mis sur la piste.

    Utilisant IE et F12 je ne voyais pas les retours

    et sur ce site j'ai vue msg.d

    est ça marche : ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    success: function (msg) {
        if ( msg.d == true) {
            alert("Successfully added new item");
        }
        else {
            alert("t'es une buse");
        }
    },

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 09/07/2007, 17h45
  2. [AJAX] connexion par ajax en conservant la session
    Par gorgonite dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/08/2006, 21h56
  3. [AJAX] Actualisation d'une page par AJAX
    Par jack_1981 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/06/2006, 13h07
  4. [AJAX] Drag n drop d'un element appelé par AJAX
    Par Death83 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 24/04/2006, 17h44
  5. [Linux] Récupération informations System
    Par chakib32 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 05/07/2005, 14h33

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