Dot*_*row 10 asp.net ajax jquery json asp.net-mvc-3
我有一个像这样的asp.net MVC 3控制器动作方法:
public JsonResult GetRecordingRates(int Id)
{
List<DefaultRateChart> defaultRateCharts = new List<DefaultRateChart>();
using (IDefaultRateChartManager defaultRateChartManager = new ManagerFactory().GetDefaultRateChartManager()) {
defaultRateCharts = defaultRateChartManager.GetAll().Where(rc => rc.Currency.Id == Id && (!rc.NumberPrefix.StartsWith("#") || rc.NumberPrefix.StartsWith("Default")) && rc.AccountCredit == "Credit").ToList();
}
return Json(defaultRateCharts);
}
Run Code Online (Sandbox Code Playgroud)
我想将此列表发送到jquery ajax成功方法,但我收到 500内部服务器错误
我的ajax调用是这样的:
$.ajax({
type: "POST",
dataType: "json",
url: "/Home/GetRecordingRates",
data: {
Id: $("#hdCurrencyId").val()
},
success: function (data) {
alert(data);
}
});
Run Code Online (Sandbox Code Playgroud)
在响应标签下的firebug XHR中,它说:
序列化"System.Reflection.RuntimeModule"类型的对象时检测到循环引用.
[编辑]
我将动作方法更改为:
public JsonResult GetRecordingRates(int Id)
{
List<DefaultRateChart> defaultRateCharts = new List<DefaultRateChart>();
using (IDefaultRateChartManager defaultRateChartManager = new ManagerFactory().GetDefaultRateChartManager())
{
defaultRateCharts = defaultRateChartManager.GetAll().Where(rc => rc.Currency.Id == Id && (!rc.NumberPrefix.StartsWith("#") || rc.NumberPrefix.StartsWith("Default")) && rc.AccountCredit == "Credit").ToList();
}
return this.Json(
new
{
Result = (from obj in defaultRateCharts select new { Id = obj.Id, DialPrefix = obj.NumberPrefix, Rate = obj.PurchaseRates })
}
, JsonRequestBehavior.AllowGet
);
}
Run Code Online (Sandbox Code Playgroud)
我现在不会得到那个错误,但是如何在ajax成功中解析该集合.我将成功更改为以下但不是在表中添加行.
success: function (data) {
var row = $('<tr>');
for(var i = 0; i < data.length; i++) {
row.append($('<td>').html(data[i]));
}
$('#results').append(row);
jQuery('#RecordingRates').dialog({ closeOnEscape: false });
$(".ui-dialog-titlebar").hide();
$("#RecordingRates").dialog({ dialogClass: 'transparent' });
$('#RecordingRates').dialog('open');
}
});
Run Code Online (Sandbox Code Playgroud)
在Firebug Net => XHR => Json中,它显示以下JSON:
[Object { Id=
1
, DialPrefix=
"1"
, Rate=
2.6
}, Object { Id=
3
, DialPrefix=
"2"
, Rate=
2.6
}, Object { Id=
5
, DialPrefix=
"7"
, Rate=
3.5
}, 3 more...]
0
Object { Id=
1
, DialPrefix=
"1"
, Rate=
2.6
}
1
Object { Id=
3
, DialPrefix=
"2"
, Rate=
2.6
}
2
Object { Id=
5
, DialPrefix=
"7"
, Rate=
3.5
}
3
Object { Id=
7
, DialPrefix=
"8"
, Rate=
6
}
4
Object { Id=
9
, DialPrefix=
"Default"
, Rate=
5
}
5
Object { Id=
15
, DialPrefix=
"Subscription"
, Rate=
15
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能在ajax成功解析集合。我将成功更改为以下,但它没有在表中添加行。
您正在返回包含以下字段的集合:Id
、DialPrefix
、Rate
,并且您没有使用它们。
var row = $('<tr>');
for(var i = 0; i < data.length; i++) {
row.append($('<td>').html(data[i]));
}
$('#results').append(row);
Run Code Online (Sandbox Code Playgroud)
您需要将它们添加到循环中:
row.append($('<td>').html(data[i].DialPrefix));
row.append($('<td>').html(data[i].Rate));
Run Code Online (Sandbox Code Playgroud)