[英]Angular $http post not returning Json response
Recipes / CreateRecipe成功,但是返回Json不返回任何內容,而是轉到下一個函數,即警報Error CreateRecipe null
腳本
$scope.createRecipe = function (recipe) {
$http({
method: 'POST',
url: '/Recipes/CreateRecipe',
data: JSON.stringify(recipe)
}).then(function (response) {
if (response!=null) {
$scope.recipeID = response.data;
alert($scope.recipeID)
}
else {
alert("get response failed! " + response.data)
}
}, function (response) { alert('Error CreateRecipe '+response.data); });
};
調節器
[HttpPost]
public JsonResult CreateRecipe([Bind(Include = "Id,Name")] Recipe vm)
{
Recipe recipe = new Recipe();
recipe.Name = vm.Name;
db.Recipes.Add(recipe);
db.SaveChanges();
return Json(recipe.Id, JsonRequestBehavior.AllowGet);
}
我嘗試了很多事情,例如添加ModelState.IsValid
並檢查recipe.Id
是否為null,但事實並非如此。 我還嘗試將JsonResult
更改為ActionResult
。 有時,警報提示get response failed!
有時是Error CreateRecipe null
。
即使我在返回它之前將recipe.Id
放在一個int中,它仍然無法正常工作。
也可以考慮使用async
任務使JsonResult
異步,並使用await db.SaveChangesAsync();
將更改保存到數據庫中await db.SaveChangesAsync();
。
public async Task<JsonResult> CreateRecipe([Bind(Include = "Id,Name")] Recipe vm)
{
int recipeId = -1;
if(vm != null) {
Recipe recipe = new Recipe();
recipe.Name = vm.Name;
db.Recipes.Add(recipe);
await db.SaveChangesAsync();
recipeId = recipe.Id;
if(recipeId > 0) {
return Json(recipeId, JsonRequestBehavior.AllowGet);
}
}
return Json(false, JsonRequestBehavior.AllowGet);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.