JQuery Ajax mit mehreren Rückgabewerte von ASP.NET
Frage
Wie kann ich mehrere Werte von jQuery.ajax () in der Erfolgsfunktion zurückkehren?
Ich versuchte es:
$.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]);
}
});
Und hier meine ASP.NET-Seite:
<WebMethod()> _
Public Shared Function myFunction() As Array
Dim a() As String
a(0) = "value 1"
a(1) = "value 2"
Return a
End Function
Es funktioniert nur in eindeutigen Return-String, aber Array funktioniert nicht: (
Lösung
Ändern Sie ihn auf msg.d[0]
.
ist Wirting msg.a
völlig falsch; der Rückgabewert der Methode hat nichts mit einem Variablennamen zu tun.
Doch aus Sicherheitsgründen, ASP.Net wickelt das JSON-Objekt in einer d
Eigenschaft, so dass Sie das Array zu schreiben msg.d
zugreifen müssen.
Andere Tipps
Für mich habe ich response.d das gesamte Spektrum in Comma Ex formatiert zurückzukehren. [1,2,3]. Um eine einzelne zu erhalten, es ist die gleiche wie die oben (response.d [0]). Die Werte wurden auf AJAX als List (Of Strings) zurück mit einem 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)
}
});
Hier ist die Web-Methode, Sorry für die kurze Variable Beschreibung des. Nur eine Probe.
<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
Danke
Ich habe die Lösung!
Ich verwende msg.d[0]
nur statt msg.a[0]