2010-04-24 32 views
0

好的,我知道如何调用一个简单的旧式asmx webservice webthod,它返回一个单一的值作为函数返回结果。但是如果我想返回多个输出参数呢?我目前的做法是将这些参数分开,并将其分解到客户端。有没有更好的办法。Javascript调用Ajax WebMethod。如何获得多个输出参数返回?

下面是我如何返回单个函数结果。如何返回多个输出值?

<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 

回答

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 
3

返回多个值的正常方法是让AJAX调用返回一个序列化的JSON对象。

例如:

{"firstName":"Santa","lastName":"Claus"} 

使用返回值是简单,由于客户机代码只是必须eval(或JSON.parse)的结果,以产生JavaScript对象。

+0

到目前为止,我通过用“|”分隔它们来返回多个值。 char并使用Java分割函数将其解析出来。你似乎在建议一种我不熟悉的解决方法。你能指点我一个例子吗? – ChadD 2010-04-27 04:24:53

+0

它被称为JSON,它被广泛使用(并且根本不被视为“uppity”)。我猜想它比XML(AJAX中的“X”)更为广泛,因为人类阅读和客户端代码更容易解​​析。 基本上,它使用JavaScript对象文字符号作为序列化。出于这个原因,它非常适合客户端JavaScript。 带有示例的高级概述:http://en.wikipedia.org/wiki/JSON – jhurshman 2010-04-27 14:05:53