2010-04-24 62 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