2012-04-17 95 views
5

是否可以將WebService中的兩個值返回給jQuery。從webservice返回兩個值

我試着像

[WebMethod(EnableSession = true)] 
public string testing(string testId) 
{ 
    string data = string.Empty; 
    string data1 = string.Empty; 
    List<test1> datalist1 = new List<test1>(); 
    List<test> datalist = new List<test>(); 

    //coding 
    data = jsonSerialize.Serialize(datalist1); 
    data1 = jsonSerialize.Serialize(datalist); 
    return [data,data1]; 
} 

但其示值誤差....我們怎樣才能從返回webservice的兩個值這裏.....

+1

你的示例代碼中有兩個語法錯誤,所以我不驚訝你看到一個錯誤。你確定這是你的代碼嗎? – user7116 2012-04-17 13:39:02

+1

看看你的代碼...你開始與**公共字符串**和你回來?要返回多個值,您應該返回一個值數組。 – 2012-04-17 13:41:10

+0

對不起sixlettervariables和huMpty duMpty它不是我的實際代碼,我只是想知道從webservice返回多個值是否可能,這就是我在這裏顯示的示例程序 – shanish 2012-04-17 14:27:27

回答

-1

我試着像

return jsonSerialize.Serialize(new { list1 = datalist1, list = datalist }); 

,我可以從我的jQuery接收這些文件容易。謝謝大家對我的支持

7

那麼你可以返回一個字符串數組

public string[] Testing(...) 
{ 
    return new string[] { data, data1 }; 
} 

你會那麼需要執行JSON的每一位單獨的反序列化客戶端,這是不太可能的是非常愉快:(

+0

感謝Jon的工作....我怎麼能在jQuery中接收這兩個值,如果它的單個值可以像「success:function(data){」 – shanish 2012-04-17 14:32:31

+0

@Shanish:我希望你能夠使用'data [0]'和'數據[1]'。但我不能說我已經做了任何JSON/jQuery工作... – 2012-04-17 15:36:18

+0

@JonSkeet - C#4看到了從方法返回Tuple的介紹 - 可以在這裏以某種方式使用Jon? – 2012-04-17 15:57:23

1

return [data, data1]是無效的C#語法。如果要將JSON數組返回給調用方,請使用JsonSerializer序列化數組並返回結果字符串。

9

另一種方法是創建具有您想要的兩個返回值的自定義數據類型:

[Serializable] 
public sealed class MyData 
{ 
    public string Data { get; set; } 
    public string Data1 { get; set; } 
} 

...

[WebMethod(EnableSession = true)] 
public MyData testing(string testId) 
{ 
    string data = string.Empty; 
    string data1 = string.Empty; 
    List<test1> datalist1 = new List<test1>(); 
    List<test> datalist = new List<test>(); 

    //coding 
    data = jsonSerialize.Serialize(datalist1); 
    data1 = jsonSerialize.Serialize(datalist); 
    return new MyData { Data = data, Data1 = data1 }; 
} 

OR

[Serializable] 
public sealed class MyData 
{ 
    public List<test> Data { get; set; } 
    public List<test1> Data1 { get; set; } 
} 

。 ..

[WebMethod(EnableSession = true)] 
public string testing(string testId) 
{ 
    MyData data = new MyData(); 
    string alldata = string.Empty; 
    List<test1> datalist1 = new List<test1>(); 
    List<test> datalist = new List<test>(); 

    //coding 
    data.Data = datalist1; 
    data.Data1 = datalist; 
    alldata = jsonSerialize.Serialize(data); 
    return alldata; 
} 
+0

謝謝Jesse,我們已經將方法聲明爲String類型,它顯示轉換錯誤,以及如何在我的jQuery中接收這兩個值? – shanish 2012-04-17 14:34:01

+0

然後使用第二個選項。 – 2012-04-17 14:48:29

+0

實際上我需要在數據和數據1中分別顯示記錄,那是什麼在這裏傳遞這兩個,我試過Jon Skeet的解決方案,它的工作,但我不知道如何在jQuery中接收這個數組值,我嘗試接收像「成功:函數(data,data1){「......其顯示錯誤 – shanish 2012-04-17 14:57:33

1

一個webmethod就像是一個常規方法,它只能返回一個的值。

如果它的相同類型可以使用列表或數組。

如果不同類型,您可以使類保持數據