我有一个简单的ajax调用,它返回一个序列化的字符串列表。这很好,我可以恢复数据。但是,我只是尝试对列表中的每个项目执行警报。但是,我只是继续从列表中找回单个字符。例如,如果它返回一个列表,其中包含一个名为“Hello”的项目。它会提醒“H”,“E”,“L”等。有人可以帮助我改变它,以便提醒整个字符串吗?
收到的回复与上面的文字非常相似。如果c#变量userList返回一个只有“Andrew”的字符串列表。 JQuery会提醒“A”,“N”,“D”等。如果不清楚,请告诉我。
由于
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");
})
});
答案 0 :(得分:3)
您可以更改c#代码和jquery,如下所示:
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");
})
});
答案 1 :(得分:0)
为什么不按原样返回列表而不是字符串,Web API会自动将其转换为json,您可以在请求中将其作为数组读取?
你只需要添加
$('#allRolesDD').change(function () {
$.ajax({
method: "POST",
url: "./GetUserList",
data: { Role: $(this).val() },
headers: {
'Content-Type': 'application/json'
}
})
.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");
})
});
答案 2 :(得分:0)
尝试每个jquery:
$.ajax({
method: "POST",
url: "./GetUserList",
data: { Role: $(this).val() },
success:function (data) {
$.each(data,function(i,v){
console.log(v);
});
}
});
答案 3 :(得分:0)
您需要将dataType: "json"
添加到ajax调用中,因为它不知道您的响应是json。它假定它是一个字符串。
$("#allRolesDD").change(function () {
$.ajax({
method: "POST",
url: "./GetUserList",
data: { Role: $(this).val() },
dataType: "json"
})
.done(function (data) {
$('.roleDD').empty();
$.each(data, function (i, v) {
alert(v);
});
// or you could also iterate using for
//for (i = 0; i < data.length; i++) {
// alert(data[i]);
//}
console.log("Passed");
})
.fail(function () {
console.log("Failed");
})
});