我有一个包含字符串的字典:例如键:“X”值:“Y”这是通过我的控制器中的 JsonResult 返回的: public JsonResult GetMachineSettings(string machine) { DataTable _dt = getmysettings_SqlCall; TaskSetting _mr= new TaskSetting(); //simply a dictionary of string,string foreach (DataRow _row in _dt.Rows) { _mr.Settings.Add( _row.Field<string>("SettingKey"), _row.Field<string>("SettingValue")); } return Json(_mr); }这已被调用并通过 jquery Ajax 调用返回:<script type="text/javascript">$('#machines').change(function () { $(this).parents('form').submit(); $.ajax({ type: 'POST', url: '@Url.Action("GetMachineSettings")', // we are calling json method dataType: 'json', data: { _items: $("#machines").val() }, success: function(_items) { var a=JSON.parse(_items); $.each(a.Record, function (i, record) { alert(record.key + " " + record.value); }); }, error: function(ex) { alert('Failed to retrieve Tasks.' + ex); } }); return false;});但它失败了,并以 Json 格式发布了一个包含我所有数据的字符串,因为 foreach 循环中存在空引用异常:{“设置”:{“X”:“Y”}}我想做的是显示一个简单的警报(此时),它将显示键/值对(更好的是,每个键的警报,然后是值)。但我不确定这是如何实现的。
1 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
我试图重现您的代码,将 AJAX 调用更改为此
删除var a=JSON.parse(_items);因为 _items 已经是 JSON 对象
在方法中更改访问(键,记录)的each 方式。
请注意,您的 财产Settings不在.TaskSettingRecord
$.ajax({
type: 'POST',
url: '@Url.Action("GetMachineSettings")', // we are calling json method
dataType: 'json',
data: {
_items: $("#machines").val()
},
success: function (_items) {
//var a = JSON.parse(_items);
$.each(_items.Settings, function (key, record) {
console.log(key + " " + record);
});
},
error: function (ex) {
alert('Failed to retrieve Tasks.' + ex);
}
});
- 1 回答
- 0 关注
- 66 浏览
添加回答
举报
0/150
提交
取消