<OperationContract(), WebGet()> Public Function GetFood(inputId As String) As Food() Dim ReturnFood As New List(Of Food) If inputId = 1 Then ReturnFood.Add(New Food With {.Id = "1", .Name = "Bananas", .Color = "Yellow"}) ElseIf inputId = 2 Then ReturnFood.Add(New Food With {.Id = "2", .Name = "Apples", .Color = "Red"}) Else ReturnFood.Add(New Food With {.Id = "1", .Name = "Bananas", .Color = "Yellow"}) ReturnFood.Add(New Food With {.Id = "2", .Name = "Apples", .Color = "Red"}) End If Return ReturnFood.ToArray End Function
Notice the WebGet attribute. This allows your web method to be called using a GET operation. Very important. Won't work without this. What this means is if you browse to http://yourserver/AjaxGetResultsService.svc/GetFood, you will get Json back in return.
Also notice that I'm returning an array of Food which is a class I made up. The .net framework will automatically turn this into Json for you.
So, if you had a button with an id of buttonPopulateFood, the following jQuery code would call this method and display the results.
$("#buttonPopulateFood").click(function () { $.ajax({ url: "AjaxGetResultsService.svc/GetFood", type: "GET", dataType: "json", data: { inputId: "1" }, success: function (json) { displayJson(json); }, error: function () { alert("You have failed.") } }); });
Here is the displayJson function I'm calling. I'm using the each function to iterate through the json array.
function displayJson(jsonData) { $.each(jsonData.d, function (index, value) { $("#food").append(index + ": " + value.Name + ", "); }); };