2014-08-31 52 views
0

錯誤我試圖執行與$ http.post調用下面的html發生的相同的操作。使用以下HTML時,post方法被成功調用。

<form action="/register/" enctype="multipart/form-data" method="post" class="ng-pristine ng-valid" _lpchecked="1"> 

的HTML被替換爲:

<form name="registrationForm"> 

而且angularJS提交方法被稱爲通過以下事項:

$scope.save = function() { 
    $http.post('/register/', {model:$scope.registration}) 
    .success(function (data) { 
    }) 
    .error(function (err) { 
     $log.error(err); 
    }); 
}; 

的是它和$ log.error記錄的錯誤是:

A public action method 'Get' was not found on controller 'RegistrationSurfaceController'. 

And my Po st方法永遠不會被調用。

[HttpGet] 
    public ActionResult Get() 
    { 
     var model = new RegistrationModel(); 
     return PartialView("umbRegistrationForm", model); 
    } 

    [HttpPost] 
    public ActionResult Post(RegistrationModel model) 
    {  
     if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 

     model.Id = Guid.NewGuid(); 
     model.Amount = 20; 

     var googleDocs = new GoogleDocsProcessor(); 
     googleDocs.AddRegistration(model, DateTime.Now); 

     TempData.Add("RegistrationSuccess", true); 
     TempData.Add("RegistrationModel", model); 
     return View(model); 
    } 

這是我在開發工具上的網絡選項卡。與代碼

$scope.save = function() { 
    $http.post('/register/', $scope.registration) 
    .success(function (data) { 
    }) 
    .error(function (err) { 
     $log.error(err); 
    }); 
}; 

networktab

+0

你在DevTools的Network選項卡中看到了什麼?你的請求是什麼樣的?有沒有GET請求? – gkalpak 2014-08-31 17:24:36

+0

它顯示一個POST寄存器/ url。那麼,什麼會導致我收到這個錯誤? – 2014-08-31 20:41:42

+0

我不確定,但它必須是你的服務器端的東西。但有一件事情可以確定:提交表單發送數據「x-www-form-urlencoded」,但是「$ http.post」(默認情況下)將數據作爲JSON發送。所以,要麼確保你的後端可以處理JSON編碼的負載,要麼採取適當的步驟讓'$ http.post'發送數據'x-www-form-urlencoded'(如果你決定去掉這條路)。 – gkalpak 2014-09-01 02:03:40

回答

0

替換下面的代碼

$scope.save = function() { 
    $http.post('/register/', {model:$scope.registration}) 
    .success(function (data) { 
    }) 
    .error(function (err) { 
     $log.error(err); 
    }); 
}; 

你在路過$scope.registrationmodel變量在後端。所以你必須在api call中提到它。我認爲這會對你有所幫助:)

+0

我嘗試了你的改變,仍然得到錯誤,說沒有Get操作方法。 – 2014-08-31 16:41:27

+0

我認爲出於某種原因,我的$ http.post發出GET請求。 – 2014-08-31 16:46:24