好的,我知道如何调用一个简单的旧式asmx webservice webthod,它返回一个值作为函数返回结果。但是如果我想返回多个输出参数呢?我目前的方法是用一个分割字符分隔params并在客户端解析它们。有没有更好的方法。
以下是我返回单个函数结果的方法。如何返回多个输出值?
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="WebService.asmx" />
</Services>
function CallHelloWebMethod() {
WebService.Hello(txtMyName.value, OnComplete1, OnTimeOut, OnError);
}
function OnComplete1(arg) {
alert(arg);
}
function OnTimeOut(arg) {
}
function OnError(arg) {
}
<WebMethod()> Public Function Hello(ByVal MyName As String) As String
Return "Hello " & MyName
End Function
答案 0 :(得分:4)
试试这个。
首先建立一个你要返回的班级......
Public Class Person
Public Name As String
Public Greeting As String
End Class
然后让webmethod返回班级......
<WebMethod()> _
Public Function Hello(ByVal MyName As String) As Person
Dim myPerson As New Person
myPerson.FirstName = MyName
myPerson.Greeting = "Hello " & MyName
Return myPerson
End Function
并更新javascript ...
function OnComplete1(arg) {
alert(arg.Greeting);
}
请注意,您也可以返回列表....
<WebMethod()> _
Public Function GetPeople() As Person()
Dim myPersonList As New Generic.List(Of Person)
Dim myPerson1 As New Person
myPerson1.FirstName = "Fred"
myPerson1.Greeting = "Hello " & MyName
Dim myPerson2 As New Person
myPerson2.FirstName = "Bill"
myPerson2.Greeting = "Hi " & MyName
myPersonList.Add(myPerson1)
myPersonList.Add(myPerson2)
Return myPersonList.ToArray()
End Function
答案 1 :(得分:3)
返回多个值的常规方法是AJAX调用返回一个序列化的JSON对象。
例如:
{"firstName":"Santa","lastName":"Claus"}
使用返回值很简单,因为客户端代码只需要eval
(或JSON.parse
)结果来生成JavaScript对象。