2012-04-17 65 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就像是一个常规方法,它只能返回一个的值。

如果它的相同类型可以使用列表或数组。

如果不同类型,您可以使类保持数据