2012-04-17 13 views
5

Es posible devolver dos valores desde un servicio web a jQuery.devuelve dos valores del servicio web

Me trataron como

[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]; 
} 

pero su error que muestra .... ¿cómo podemos devolver dos valores del servicio web aquí .....

+1

Hay dos errores de sintaxis en su código de ejemplo, así que no me sorprende que esté viendo un error. ¿Estás seguro de que este es tu código? – user7116

+1

mira tu código ... ¿empiezas con ** cadena pública ** y qué estás volviendo? Para devolver valores múltiples, debe devolver una matriz de valores. –

+0

lo siento sixlettervariables y huMpty duMpty no es mi código real, solo quería saber que es posible o no devolver más de un valor del servicio web, eso es lo que he mostrado en un programa de ejemplo aquí – shanish

Respuesta

-1

que probé como

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

y puedo derecho a ellas desde mi jQuery presentar fácilmente. Gracias a todos por su soporte

7

Bien se podría devolver un conjunto de cadenas :

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

a continuación, se necesitaría para llevar a cabo cada bit de JSON deserialización separado en el cliente, que no es probable que sea terriblemente agradable :(

+0

gracias Jon está trabajando .... cómo puedo recibir estos dos valores en jQuery, si es un valor único que puedo recibir como "success: function (data) {" – shanish

+0

@Shanish: esperaría que pudieras usar 'data [0]' and ' datos [1] '. Pero no puedo decir que haya hecho ningún trabajo JSON/jQuery ... –

+0

@JonSkeet - C# 4 visto la introducción de devolver Tuple de un método - ¿se puede usar de alguna manera aquí, Jon? –

1

return [data, data1] no es una sintaxis válida de C#. Si desea devolver una matriz JSON a la persona que llama, utilice el JsonSerializer para serializar la matriz y devolver la cadena resultante.

9

Otra forma es crear un tipo de datos personalizada que tiene los dos valores de retorno que desee:

[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 }; 
} 

O

[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

gracias Jesse, en realidad hemos declarado el método como tipo String, muestra el error de conversión, y ¿cómo puedo recibir estos dos valores en mi jQuery? – shanish

+0

Luego usa la segunda opción. –

+0

en realidad necesito mostrar los registros en datos y datos1 por separado, eso es lo que estoy pasando aquí, probé la solución de Jon Skeet, está funcionando, pero no sé cómo recibir este valor de matriz en jQuery, intenté recibir como "éxito": function (data, data1) {"... muestra el error – shanish

1

un webmethod es como un método normal, solo puede devolver un valor de.

si es del mismo tipo, puede usar una lista o matriz.

si sus diferentes tipos que puede hacer una clase que contiene los datos

Cuestiones relacionadas