如何在成功函数中从JQuery.Ajax()返回多个值?
我试过了:
$.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]);
}
});
这是我的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
它仅适用于唯一的返回字符串,但数组不起作用:(
答案 0 :(得分:8)
将其更改为msg.d[0]
。
出错msg.a
是完全错误的;方法的返回值与变量名无关。
但是,出于安全原因,ASP.Net将JSON对象包装在d
属性中,因此您需要编写msg.d
来访问该数组。
答案 1 :(得分:1)
对于我自己,我使用response.d来返回用逗号前[1,2,3]格式化的完整数组。要接收个人,它与上述相同(response.d [0])。使用WebMethod将值作为List(Of Strings)返回给AJAX。
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)
}
});
这是Web方法,对于简短的变量描述,我们深表歉意。只是一个样本。
<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
由于
答案 2 :(得分:0)
我得到了解决方案!
我只使用msg.d[0]
代替msg.a[0]