2014-05-03 68 views
0

我試圖使用Angular $ http.post(url,data)方法。但是我正面臨一些問題,要將正確的數據發佈到服務器(WebAPI)。我已經嘗試過下面的選項,但沒有任何工作。

var data1 = new Object(); 
    data1.UserName = "UserA1"; 
    data1.Password = "password123"; 
    data1.ConfirmPassword = "password123"; 

var data2 = angular.toJson(data1); 

var data3 = JSON.stringify(data1); 

var data4 = { UserName: "UserA2", Password: "password123", ConfirmPassword: "password123" }; 

var data5 = "UserName=UserA3&Password=password123&ConfirmPassword=password123"; 

$http.post(url, data1) 
$http.post(url, data2) 
$http.post(url, data3) 
$http.post(url, data4) 
$http.post(url, data5) 

沒有工作。什麼樣的數據對於這種方法是正確的。我用上面的數據試過JQuery.post(),它工作。它對我來說超級奇怪,爲什麼這個簡單的angularjs方法很難使用,或者我錯過了一些東西。

更新: 基本上我正在研究下面的例子。我想從客戶端註冊用戶(/api/Account/Register)。 http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

+2

您的WebAPI控制器方法是什麼樣的?你得到什麼迴應代碼? – Tom

+0

你在服務器端使用什麼?它是PHP嗎? –

+0

當你說它不工作時,你是什麼意思?服務器是否響應有錯誤? –

回答

0

這是因爲你的服務器端期望一個請求的內容爲x-www-form-urlencoded

jQuery的$.post()發送帶有而角的$http.post()內容類型的application/x-www-form-urlencoded請求發送具有內容類型的application/json請求(以及編碼該數據作爲JSON(形式數據的instad)如果一個JS對象被傳遞)。

有一些方法可以使用$http發送x-www-form-urlencoded請求(並且在SO上有幾個相關的答案),但它涉及較不直接的代碼。
我建議你改變你的服務器端來使用JSON請求。

0

根據你在服務器端的內容,你應該改變你的請求(例如PHP的情況,或者你可以從輸入流中讀取:php:// input)。

看到這個要點:https://gist.github.com/JensRantil/5713606

如果不解決您的問題,請檢查角度的要求是創建(使用開發人員工具 - >在Chrome例如網絡選項卡),並告訴我們你所看到的。