Reputation: 1084
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
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
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
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
Reputation: 16499
Using Array.split() will produce an array:
var string = "red,blue,green,orange"
$.each(string.split(','), function(){
alert(this)
})
Upvotes: 8