我有2個Ajax調用需要2個獨立的控制器方法,一個創建一個floorplan對象並將其保存到數據庫,另一個發送任何計劃對象的數組(椅子,桌子等)到同一個數據庫。.NET在第一個成功之後創建第二個Ajax調用
我在第一次調用成功的第二次ajax調用,但它似乎最初不會發生。我已經設置了斷點來檢查數據,並且平面佈置圖肯定添加了有效數據。如果我嘗試創建另一個,那麼它就可以工作,所以我不確定它是否是數據庫問題,或者如果我的JavaScript錯誤。
這是Ajax調用我有我的JavaScript保存功能
$.ajax({
url: "/Floorplans/Create",
type: "POST",
contentType: "application/json",
data: JSON.stringify($floorplan),
success: function() {
$.ajax({
url: "/planObjects/Create",
type: "POST",
contentType: "application/json",
data: JSON.stringify($objArray)
//objArray is an array of planObjects
});
}
});
我的平面佈置圖控制器:
[HttpPost]
//Floorplan controller
public ActionResult Create(Floorplan floorplan)
{
if (ModelState.IsValid){
db.Floorplans.Add(floorplan);
db.SaveChanges();
return Json(new {success = true});
}
else{
return Json(new {success = false});
}
}
planObjects控制器:
[HttpPost]
public void Create(List<planObject> newObjects)
{
var model = new planObject();
if (ModelState.IsValid)
{
newObjects.ForEach(r => db.planObjects.Add(r));
db.SaveChanges();
}
}
有了這個代碼,阿賈克斯在第一次ajax調用成功時調用不會在第一次嘗試時執行,但是如果我做了ano它的平面佈置圖完美地工作。你們能否解決這個問題?我試圖使用單個控制器的操作方法,但我無法正常工作。
僅供參考:json中的'success'不會有條件地影響成功回調。在你的'success'回調函數中,你需要把'success:function(data){if(data.success){.....}' – Curt 2015-04-03 08:16:16
提示:考慮嵌套調用的promise API,它提高了可讀性! – Yoeri 2015-04-03 08:18:20
@Curt謝謝你的提示,你幫我解決了我的問題以及SBirthare的回答。 – Mark 2015-04-03 11:08:20