2012-04-17 17 views
5

Możliwe jest zwrócenie dwóch wartości z usługi WebService do jQuery.zwraca dwie wartości z usługi internetowej:

Próbowałem jak

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

ale jego błędu pokazano .... jak możemy wrócić dwóch wartości z usługa tutaj .....

+1

W kodzie przykładowym występują dwa błędy składniowe, więc nie jestem zaskoczony, że widzisz błąd. Jesteś pewien, że to twój kod? – user7116

+1

spójrz na swój kod ... zaczynasz od ** public string ** i do czego wracasz ??? Aby zwrócić wiele wartości, powinieneś zwrócić tablicę wartości. –

+0

Przepraszam, sixlettervariables i huMpty duMpty to nie mój rzeczywisty kod, po prostu chciałem wiedzieć, że zwrócenie więcej niż jednej wartości z serwisu jest możliwe, czy nie, to właśnie pokazałem przykładowy program tutaj – shanish

Odpowiedz

-1

próbowałem jak

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

i mogę odbierać te z mojego jQuery łatwo złożyć. Dziękujemy wszystkim za pomoc techniczną

7

Cóż można zwrócić tablicę ciągów :

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

Byłbyś wtedy trzeba wykonać każdy bit JSON deserializacji oddzielnie na kliencie, który nie jest prawdopodobne, aby być strasznie przyjemny :(

+0

dziękuję Jonowi za pracę .... jak mogę otrzymać te dwie wartości w jQuery, jeśli jest to jedna wartość, którą mogę otrzymać, jak "success: function (data) {" – shanish

+0

@Shanish: Oczekuję, że będziesz w stanie użyć 'data [0]' i ' dane [1] ". Ale nie mogę powiedzieć, że zrobiłem jakiekolwiek prace JSON/jQuery ... –

+0

@JonSkeet - C# 4 widział wprowadzenie zwrotu Tuple'a z metody - czy można go w jakiś sposób wykorzystać tutaj Jon? –

1

return [data, data1] Niepoprawna składnia C#. Jeśli chcesz zwrócić tablicę JSON do wywołującego, użyj JsonSerializer do serializacji tablicy i zwrócenia wynikowego łańcucha.

9

Innym sposobem jest utworzenie niestandardowego typu danych, który ma dwie wartości zwracanych ma:

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

LUB

[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

dzięki Jesse, pod warunkiem, że zadeklarowaliśmy metodę jako typ String, pokazuje błąd konwersji i jak mogę otrzymać te dwie wartości w moim jQuery? – shanish

+0

Następnie użyj drugiej opcji. –

+0

faktycznie muszę wyświetlić rekordy w danych i data1 osobno, to co przechodzę przez te dwa tutaj, wypróbowałem rozwiązanie Jona Skeeta, jego działanie, ale nie wiem jak otrzymać tę wartość tablicy w jQuery, próbowałem odbierać jak "sukces: function (data, data1) {"...... pokazuje błąd – shanish

1

webmethod jest jak zwykła metoda, może zwracać tylko wartość o wartości.

jeśli jest tego samego typu, można użyć listy lub tablicy.

jeśli jego różnych typów można dokonać klasa trzyma dane

Powiązane problemy