views:

1626

answers:

4

I have a controller that returns a list of custom linq-to-sql model objects in JSON format to jquery ajax calls:

List<MyAppLibrary.Model.Search> listSearches = search.ToList();
        return new JsonResult { Data = listSearches };

I have the following javascript which gets the response:

$.getJSON("/ajax/getbrands",
    function(data) {
        alert(data);
    });

I'd like to know how I can process that data response in javascript? How do I get the Name paramter of the Model.Search object?

Thanks.

+1  A: 

You can use jquery.json plugin play with the JSON returned.

TheVillageIdiot
+3  A: 

The data argument will have a Data property, which is your list of Search models.

 $.getJSON("/ajax/getbrands"),
        function(data) {
             $.each(data.Data, function(i,item) {
                  ...item will be a Search model...
                  ...i will be the index of the item in the list...
             });
        }
 );
tvanfosson
I used this format, but had to change the each line to $.each(data, function(i,item){for it to work. Interestingly the jquery site says to use$.each(data.items, function(i,item){but that didn't work for me with jquery.1.3.2
+4  A: 

The data variable that gets returned from the jQuery AJAX call contains the JSON object. You can access the fields of each of your MyAppLibrary.Model.Search objects in your JavaScript like so:

// this will grab the Search object at index 0 of your list
// and put the Name property's value of the Search object
// into a var
var firstItemName = data.Data[0].Name;
Tim S. Van Haren
+1  A: 

if you can rely on data to be safe, you can use

var obj = eval('(' + jsonText + ')');
alert(obj.myVariable)
Anurag Uniyal
works but everyone says you should never do it :)
Allen
that is why i added a 'if' ;)
Anurag Uniyal