C# MVC5通过jQueryAjax返回通用对象列表
我试图通过jQuery Ajax检索对象列表 我有这样一个控制器方法:C# MVC5通过jQueryAjax返回通用对象列表,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我试图通过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.
[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);
}
$.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');
}
});
在我看来,代码是这样的
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');
}
});
我的控制器动作被击中了。但警报总是“未定义”。
我也试过了
success: function (data) {
var result = data.d;
for (var i = 0; i < result.length; i++) {
alert(result[i].attributes);
}
成功:函数(数据){
var结果=数据d;
对于(变量i=0;i
那里也没有成功。我做错了什么
提前感谢…1.
您正在从服务器返回JSON。
您必须在Ajax请求中将dataType
设置为json
return new Json(new {list = retval}, JsonRequestBehavior.AllowGet);
在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);
}
}
因此,您可以这样编写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);
}
$.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');
}
});
1.
您正在从服务器返回JSON。
您必须在Ajax请求中将dataType
设置为json
return new Json(new {list = retval}, JsonRequestBehavior.AllowGet);
在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);
}
}
因此,您可以这样编写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);
}
$.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');
}
});
看起来您正在一个名为list的命名属性中返回JSON。您从
警报(data.list);
中得到了什么?我成功添加了以下代码:函数(data){var result=data.list;警报(data.list);警报(result.length);警报为“未定义”第二个警报给出错误“无法获取未定义或空引用的属性”长度当您在浏览器中收到json时,您是否可以分析响应,如果它是hsa某物,如果是空的,您也应该开始查看为什么不正确返回视图感谢控制台和响应上的提示。解决了我的问题问题看起来您在名为list的命名属性中返回JSON。您从警报(data.list);
中得到了什么?我成功添加了以下代码:函数(data){var result=data.list;警报(data.list);警报(result.length);警报为“未定义”第二个警报给出错误“无法获取未定义或空引用的属性”长度当您在浏览器中收到json时,您是否可以分析响应,如果它是hsa某物,如果是空的,您也应该开始查看为什么不正确返回视图感谢控制台和响应上的提示。解决了我的问题问题我根据你的建议进行了更改。顺便说一句,谢谢你的链接,非常有用。我得到的错误是SyntaxError:JSON.parse:JSON数据第1行第1列的意外字符。我正在研究这个问题,但是如果你有建议,请随时分享…你从服务器得到了什么响应?你知道吗成功函数中的le.log(result)这样你就不必做这个data:JSON.stringify({listname:listname})
。你只需做data:{listname:listname}
就可以了,我已经说过我认为你不需要这个contentType:“application/JSON;charset=utf-8”
,因为listname
是一个GET
parameter@AivanMonceller你在这两方面都是正确的。非常感谢。我根据你的建议进行了更改。顺便说一句,谢谢你的链接,非常有用。我得到的错误是SyntaxError:JSON.parse:我正在查找的JSON数据的第1行第1列的意外字符但是如果你有什么建议,请随意分享…你从服务器得到了什么响应?在成功函数中执行console.log(result)这样你就不必执行data:JSON.stringify({listname:listname})
。你只需执行data:{listname:listname}即可
我已经说过,我认为您不需要这个内容类型:“application/json;charset=utf-8”
,因为listname
是一个GET
parameter@AivanMonceller在这两方面你都是对的。非常感谢。