Javascript调用Ajax WebMethod。如何获得多个输出参数返回?

时间:2010-04-24 06:47:05

标签: asp.net vb.net ajax

好的,我知道如何调用一个简单的旧式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

2 个答案:

答案 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对象。