w2o*_*ves 1 c# ajax asp.net-mvc jquery
我正在尝试通过 jQuery Ajax 检索对象列表
我有一个这样的控制器方法:
[HttpGet]
public JsonResult GetAllStates(string listname = "")
{
clsDdl ddl = new clsDdl();
List<clsDdl> retval = new List<clsDdl>();
ddl.id = "1";
ddl.value = "Dropdown1";
ddl.status = "DDL Status";
ddl.attributes = "First Dropdown Text";
retval.Add(ddl);
//return retval;
return Json(new
{
list = retval
}, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
这是我试图返回的 Dropdown 类
public class clsDdl
{
public string id { get; set; }
public string value { get; set; }
public string status { get; set; }
public string attributes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我看来,代码看起来像这样
function LoadListItems (options) {
var listname = options.listname;
$.ajax({
type: "GET",
url: url,
data: JSON.stringify({
listname: listname
}),
contentType: "application/json; charset=utf-8",
async: true,
success: function (result) {
alert(result[0].value);
},
error: function (xhr, status, err) {
alert(err.toString(), 'Error - LoadListItemsHelper');
}
});
Run Code Online (Sandbox Code Playgroud)
我的控制器动作被击中。但警报始终是“未定义”。我也试过
success: function (data) {
var result = data.d;
for (var i = 0; i < result.length; i++) {
alert(result[i].attributes);
}
Run Code Online (Sandbox Code Playgroud)
那里也没有成功。我究竟做错了什么 ?
提前致谢...
1.
您正在从服务器返回 JSON。您必须dataType在 Ajax 请求中设置为json
contentType --> 数据发送到服务器
dataType --> 从服务器返回的数据
$.ajax({
type: "GET",
url: url,
data: JSON.stringify({ listname: listname }),
contentType: "application/json; charset=utf-8",
//HERE
dataType: 'json',
success: function (result) {
alert(result[0].value);
},
error: function (xhr, status, err) {
alert(err.toString(), 'Error - LoadListItemsHelper');
}
});
Run Code Online (Sandbox Code Playgroud)
2.
你回来了
return new Json(new {list = retval}, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
在 success: function(result)
您可以像这样访问列表: result.list[index]
success: function (result) {
for(var i =0; i < result.list.length; i++){
alert(result.list[i].value);
alert(result.list[i].status);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑基于 Aivan Monceller 的评论,您可以这样做:
当您发送时,GET您不需要
contentType: "application/json; charset=utf-8",
Run Code Online (Sandbox Code Playgroud)
所以你可以像这样写你的 Ajax:
$.ajax({
type: "GET",
url: url,
data: { listname: listname },
//HERE
dataType: 'json',
success: function (result) {
alert(result[0].value);
},
error: function (xhr, status, err) {
alert(err.toString(), 'Error - LoadListItemsHelper');
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4734 次 |
| 最近记录: |