1
コードは以下のように見える:jQueryのajax呼び出しを使用してMVC 5アプリでJsonにデータを変換する方法は?
1)エンティティクラス:
public partial class EnergeticalComplex : TrackableBaseObject, IWithDbAffiliateFieldBlockField
{
private ICollection<Cell> _cells;
private ICollection<Document> _documents;
public int? AffiliateId { get; set; }
public virtual Affiliate Affiliate { get; set; }
public int? FieldBlockId { get; set; }
[AutoQueryRoot]
public virtual FieldBlock FieldBlock { get; set; }
public int? FieldId { get; set; }
[AutoQueryRoot]
public virtual Field Field { get; set; }
[NotNull]
[AutoQueryRoot]
public virtual ICollection<Cell> Cells
{
get { return _cells ?? (_cells = new List<Cell>().WithLock(SyncRoot)); }
}
[NotNull]
[TrackableRelation]
public virtual ICollection<Document> Documents
{
get { return _documents ?? (_documents = new List<Document>().WithLock(SyncRoot)); }
}
}
2)コントローラで:
public JsonResult ComboBoxBalanse(int fieldId)
{
List<EnergeticalComplex> eComplex;
using (var c = _contextFactory.CreateContext())
{
var eComplexesSet = c.Set(c.GetType()
.EntityTypes()
.First(t => typeof(IEnergeticalComplex).IsAssignableFrom(t)));
eComplex = eComplexesSet
.Cast<EnergeticalComplex>()
.Where(ec => ec.Field.Id == fieldId && !ec.Name.Contains("KTP"))
.ToList();
}
ViewData["EnergeticalComplexList"] = eComplex;
ViewData["fieldId"] = fieldId;
return Json(eComplex, JsonRequestBehavior.AllowGet);
}
3)JavaScriptのモジュールは:
function onClickShowButton() {
var selectBoxField = $("#divFieldsComboBox").dxSelectBox("instance");
var indField = selectBoxField.option("value");
$.ajax({
contentType: "application/json; charset=utf-8",
type: 'POST',
url: '/LostEnergyCalculation/ComboBoxBalanse',
dataType: 'json',
data: "{ fieldId: " + indField + " }"
}).done(function (data) {
alert(JSON.stringify(data));
});
}
プログラムフローは.done()の後にブロックに入りません。
_after_ '.done()'、詳しく教えてください。 'console.log(data);の出力は何ですか? – Satpal
コンソールにエラーがあるかどうか確認しましたか? –
console.log(data)で.fail()ブロックを追加しましたが、これがあります:ReferenceError:データが定義されていません。 – tesicg