Jon Jones
Jon Jones

Reputation: 1084

How to iterate through a list of strings returned from a web service using JQuery

This is my first JQuery experience and I'm on quite a tight deadline. It's a bit of an embarrassing question, but here goes. I'm calling a web service that returns a list of strings (which works and returns OK). Code is below

$(document).ready(
    function() 
    {
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "CatList.asmx/GetCatergoies",
            data: "{}",
            dataType: "json",
            success: onActionCompleted
        });
    }
)

function onActionCompleted(data) {

    var resultData = data['d'];
    alert(resultData);
 }

The alert produces a comma seperate string of the results from the web service. I can't figure out for the life of me how I can iterate through the results. When I do something like this:

resultData.each(
   alert(this)
)

All I get in Firebug is this error:

resultData.each is not a function

Any pointers ?

Upvotes: 4

Views: 12917

Answers (4)

Program.X
Program.X

Reputation: 7412

Consider string.split() instead of jQuery:

var items = results.split(',');

for( var i = 0; i < items.length; i++ ) {
  alert( items[i] );
}

Upvotes: 5

Jon Jones
Jon Jones

Reputation: 1084

Thanks! I wouldn't have been able to solve it without the feedback. I'm still not completely sure what format resultData is. I did some copy and paste on the code so not sure what data['d'] converts the list into in json terms.

When I tried the split on resultdata I got this error in Firebug:

resultData.split is not a function

In the end I just used the $.each() on resultdata without the split and it worked.

function onActionCompleted(data) {

    var resultData = data['d'];
    $.each(resultData, function() {
        alert(this)
    })
}

Upvotes: 2

Magnar
Magnar

Reputation: 28810

Sounds like your webservice gave you a csv-string. Split it into an array, wrap jQuery around it and add a callback function for each of the elements like this:

$(resultData.split(",")).each(function () {
    alert(this);
});

Upvotes: 4

duckyflip
duckyflip

Reputation: 16499

Using Array.split() will produce an array:

var string = "red,blue,green,orange"

$.each(string.split(','), function(){
  alert(this)
})

Upvotes: 8

Related Questions