views:

383

answers:

4

Hi

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 ?

A: 

I don;t think jQuery is the solution, here. Maybe the standard JavaScript string.Split()?

http://www.quirksmode.org/js/strings.html#split

So:

temp = d.split(',');

Then just iterate round a for loop?

for (var i=0; i<d.temp.length; i++) {
   alert(temp[i]);
}
Program.X
+1  A: 

Using Array.split() will produce an array:

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

$.each(string.split(','), function(){
  alert(this)
})
duckyflip
+1  A: 

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);
});
Magnar
each does also work on normal arrays. So $.each(resultData.split(","), function(){}); should work also.
Ikke
Indeed, I just prefer the $(array).each(callback) syntax over $.each(array, callback) for readability purposes.
Magnar
A: 

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)
    })
}
Jon Jones
This means that data['d'] is already an array :). How did you came up with the idea that it's a comma delimited string ?
duckyflip