文字列を含む辞書があります。キー: "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);
}
これは呼び出され、jqueryAjax呼び出しを介して返されます。
<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;
});
しかし、失敗し、foreachループを除いてnull参照のため、すべてのデータを含む文字列をJson形式で投稿します。
{"設定":{"X": "Y"}}
私がやろうとしているのは、キーと値のペアを表示する単純なアラート(この時点で)を表示することです(さらに良いことに、各キーのアラート、次に値)。しかし、これをどのように達成できるかわかりません。
私はあなたのコードを再現しようとしました、これにAJAX呼び出しを変更してください
var a=JSON.parse(_items);
_itemsはすでにJSONオブジェクトであるため削除します
each
メソッド内の(キー、レコード)へのアクセス方法を変更します。
そして、あなたの財産はSettings
でTaskSetting
はないことに注意してくださいRecord
。
$.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);
}
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加