我有这样一个asp.net MVC 3控制器的操作方法:
公共JsonResult GetRecordingRates(INT标识)
{
名单< DefaultRateChart> defaultRateCharts =新的名单,其中,DefaultRateChart>();
使用(IDefaultRateChartManager defaultRateChartManager =新ManagerFactory()。GetDefaultRateChartManager()){
defaultRateCharts = defaultRateChartManager.GetAll()式(RC => rc.Currency.Id == ID和安培;&安培;!(rc.Number prefix.StartsWith(#)|| rc.Number prefix.StartsWith(默认))及和放大器; rc.AccountCredit ==信贷)了ToList()。
}
返回JSON(defaultRateCharts);
}
我想送这个名单jQuery的阿贾克斯成功的方法,但我得到的 500内部服务器错误
我的AJAX调用是这样的:
$。阿贾克斯({
键入:POST,
数据类型:JSON,
网址:/首页/ GetRecordingRates
数据: {
编号:$(#hdCurrencyId)VAL()。
},
成功:功能(数据){
警报(数据);
}
});
在在响应选项卡萤火虫XHR,它说:
一个循环引用,而序列化类型System.Reflection.RuntimeModule。
的对象检测
我改变了操作方法如下:
公共JsonResult GetRecordingRates(INT标识)
{
名单< DefaultRateChart> defaultRateCharts =新的名单,其中,DefaultRateChart>();
使用(IDefaultRateChartManager defaultRateChartManager =新ManagerFactory()。GetDefaultRateChartManager())
{
defaultRateCharts = defaultRateChartManager.GetAll()式(RC => rc.Currency.Id == ID和安培;&安培;!(rc.Number prefix.StartsWith(#)|| rc.Number prefix.StartsWith(默认))及和放大器; rc.AccountCredit ==信贷)了ToList()。
}
返回this.Json(
新
{
结果=(从OBJ在defaultRateCharts选择新{n = obj.Id,拨号preFIX = obj.Number preFIX,速率= obj.PurchaseRates})
}
,JsonRequestBehavior.AllowGet
);
}
和我没有现在得到这个错误,但我怎么能解析阿贾克斯成功采集。我改成功之后,但它不添加表行。
成功:功能(数据){
VAR行= $('< TR>');
对于(VAR I = 0; I< data.length;我++){
row.append($('< TD>。)HTML(数据[I]));
}
$('#结果)追加(行);
。jQuery的('#RecordingRates)对话框({closeOnEscape:虚假});
$(UI-对话框的标题栏)隐藏()。
$(#RecordingRates)对话框({dialogClass:'透明'});
$('#RecordingRates)对话框(开放);
}
});
在萤火虫网=> XHR =>的Json,它显示了在JSON:
[对象{n =
1
,拨号preFIX =
1的
,率=
2.6
},{对象n =
3
,拨号preFIX =
2
,率=
2.6
},{对象n =
五
,拨号preFIX =
7
,率=
3.5
},3更多...]
0
对象{n =
1
,拨号preFIX =
1的
,率=
2.6
}
1
对象{n =
3
,拨号preFIX =
2
,率=
2.6
}
2
对象{n =
五
,拨号preFIX =
7
,率=
3.5
}
3
对象{n =
7
,拨号preFIX =
8
,率=
6
}
4
对象{n =
9
,拨号preFIX =
默认
,率=
五
}
五
对象{n =
15
,拨号preFIX =
订阅
,率=
15
}
解决方案
我怎么能解析阿贾克斯成功采集。我改成功 以下,但它未在表中增加的行。
您正在返回具有以下字段的集合:编号
,拨号preFIX
,率
,并没有使用它们。
VAR行= $('< TR>');
对于(VAR I = 0; I< data.length;我++){
row.append($('< TD>。)HTML(数据[I]));
}
$('#结果)追加(行);
您需要将它们添加到您的循环:
row.append($('< TD>。)HTML(数据[I] .Dial preFIX));
row.append($('< TD>。)HTML(数据[I] .Rate));
I have an asp.net MVC 3 controller action method like this:
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);
}
I want to send this list to jquery ajax success method but I am getting 500 Internal Server Error
my ajax call is like this:
$.ajax({
type: "POST",
dataType: "json",
url: "/Home/GetRecordingRates",
data: {
Id: $("#hdCurrencyId").val()
},
success: function (data) {
alert(data);
}
});
In firebug XHR under response tab, it says:
A circular reference was detected while serializing an object of type 'System.Reflection.RuntimeModule'.
[EDIT]
I changed the action method to this:
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
);
}
and I dont get that error now but how can I parse the collection in ajax success. I changed success to following but it is not adding rows in table.
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');
}
});
In Firebug Net => XHR=> Json, It shows following 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
}
解决方案
how can I parse the collection in ajax success. I changed success to following but it is not adding rows in table.
You are returning a collection with the following fields: Id
, DialPrefix
, Rate
, and you are not using them.
var row = $('<tr>');
for(var i = 0; i < data.length; i++) {
row.append($('<td>').html(data[i]));
}
$('#results').append(row);
You need to add them to your loop:
row.append($('<td>').html(data[i].DialPrefix));
row.append($('<td>').html(data[i].Rate));
相关推荐
最新文章