How to parse JSON list of string on ajax return?
14,585
you can change c# code and jquery like below:
C#
[HttpPost]
public JsonResult GetUserList(string Role) {
List<string> UserList = new List<string>();
UserList = Roles.GetUsersInRole(Role).ToList();
return Json(UserList, JsonRequestBehavior.AllowGet);
}
JQuery
$('#allRolesDD').change(function () {
$.ajax({
method: "POST",
url: "./GetUserList",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: { Role: $(this).val() }
})
.done(function (data) {
$('.roleDD').empty();
for (i = 0; i < data.length; i++) {
alert(data[i]);
}
console.log("Passed 4");
})
.fail(function () {
console.log("Failed 4");
})
});
Author by
Andrew Kilburn
Updated on July 21, 2022Comments
-
Andrew Kilburn over 1 year
I have a simple ajax call which returns a serialised list of strings. This is great and I can get the data back. However I'm simply trying to perform an alert on each item in the list. However, I just keep getting back single characters from the list instead. For example if it returned a list with one item in it called "Hello". It would alert "H", "E", "L" etc. Can someone help me change this so it alerts the full string?
The response received back is very similar to the text above. If the c# variable userList returns a list of strings with just "Andrew" in it. The JQuery will alert "A", "N", "D" etc. If that isn't clear, just let me know.
Thanks
C#
[HttpPost] public string GetUserList(string Role) { List<string> UserList = new List<string>(); UserList = Roles.GetUsersInRole(Role).ToList(); return JsonConvert.SerializeObject(UserList); }
JQuery
$('#allRolesDD').change(function () { $.ajax({ method: "POST", url: "./GetUserList", data: { Role: $(this).val() } }) .done(function (data) { $('.roleDD').empty(); for (i = 0; i < data.length; i++) { alert(data[i]); } console.log("Passed 4"); }) .fail(function () { console.log("Failed 4"); }) });
-
Andrew Kilburn over 8 yearsI receive the error: Cannot use 'in' operator to search for 'length' in ["ANDREW"]. I tried this before but to no avail :(
-
Andrew Kilburn over 8 yearsDo you have any links which you could show me on how to implement this?
-
Andrew Kilburn over 8 yearsBut how? I'm serialising the data correctly. Not sure why that is happening
-
AntiHeadshot over 8 years@AndrewKilburn I updatd the answer, I think this should do the job.
-
Andrew Kilburn over 8 yearsI then get an internal server error stating that it cannot find the GetUserList method. Pretty strange as it could before. Does that mean that I have to change my return type to json instead of a string?
-
AntiHeadshot over 8 years@AndrewKilburn No, you have to change your return type to
List<string>
-
Andrew Kilburn over 8 yearsThank for the persistence. You've helped a lot here. Can I ask what the different is from returning a Json serialised string compared to a JsonResult?
-
Atikur Rahman over 8 yearsYour return type was string. so Json serialised return will converted to string and get back to you. so you got just a string not the list.