2010-10-13 7 views
2

Comment puis-je renvoyer plusieurs valeurs de JQuery.Ajax() dans la fonction de réussite?JQuery Ajax avec plusieurs valeurs de retour d'ASP.NET

Je l'ai essayé:

  $.ajax({ 
       type: "POST", 
       url: "default.aspx/myFunction", 
       data: "{}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
        $("#myDiv").html(msg.a[0]); 
        $("#myDiv2").html(msg.a[1]); 
       } 
      }); 

Et voici ma page ASP.NET:

<WebMethod()> _ 
Public Shared Function myFunction() As Array 

    Dim a() As String 
    a(0) = "value 1" 
    a(1) = "value 2" 

    Return a 

End Function 

Il fonctionne dans la chaîne de retour unique, mais tableau ne fonctionne pas :(

+1

Est votre WebMethod fait retourner un résultat JSON? Selon le code que vous avez publié, je ne le pense pas. – CodingGorilla

Répondre

8

Changez-le en msg.d[0]

Wirting msg.a est complètement faux; La valeur de retour de la méthode n'a rien à voir avec un nom de variable. Toutefois, pour des raisons de sécurité, ASP.Net encapsule l'objet JSON dans une propriété d. Vous devez donc écrire msg.d pour accéder à la baie.

0

J'ai la solution!

je viens d'utiliser à la place msg.d[0]msg.a[0]

1

Pour moi je response.d pour retourner le tableau complet formaté dans l'ex de Comma. [1,2,3]. Pour recevoir un individu, c'est le même que ci-dessus (response.d [0]). Les valeurs ont été renvoyées à AJAX en tant que liste (Of Strings) en utilisant un WebMethod.

   var Str = {}; 
       Str.StrVal = 'Test1'; 
       Str.StrVal2 = 'Test2'; 
       Str.StrVal3 = 'Test3'; 
       Str.StrVal4 = 'Test4'; 
       $.ajax({ 
        type: "POST", 
        url: "VB.aspx/GetString", 
        data: '{Str: ' + JSON.stringify(Str) + '}', 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (response) { 
         alert("User has been added successfully." + response.d); 
         //window.location.reload(); 
         //window.data("kendoWindow").close(); 
         Str.StrVal = response.d[0]//response.d 
         //AddTab(response.d) 
         GetTabs(Str.StrVal) 
        }, 
        error: function (response) { 
         alert(response.d) 
        } 
       }); 

Voici la méthode Web, désolée pour les brèves descriptions des variables. Juste un échantillon.

<WebMethod()> _ 
<ScriptMethod()> _ 
Public Shared Function GetString(Str As SendString) As List(Of String) 
    Dim a As New List(Of String) 
    a.Add("1") 
    a.Add("2") 
    Return a 
End Function 

Merci