簡體   English   中英

Angular $ http發布不返回Json響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM