4

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 ?

4 Answers 4

8

Using Array.split() will produce an array:

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

$.each(string.split(','), function(){
  alert(this)
})
Sign up to request clarification or add additional context in comments.

Comments

5

Consider string.split() instead of jQuery:

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

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

Comments

4

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

2 Comments

each does also work on normal arrays. So $.each(resultData.split(","), function(){}); should work also.
Indeed, I just prefer the $(array).each(callback) syntax over $.each(array, callback) for readability purposes.
2

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)
    })
}

2 Comments

This means that data['d'] is already an array :). How did you came up with the idea that it's a comma delimited string ?
because alert(resultData); displayed a command delimited string. That must be how javascrip formats arrays?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.