2015-04-01 50 views
3

如何在不使用jQuery的情況下序列化一個對象$.param如何使用angularjs序列化對象

我想下面的對象:

var user = {username: 'ronald.araujo', password: '123456',}; 

有以下的輸出:

username=ronald.araujo&password=123456 

有什麼建議?記住我會用Angularjs或純Javascript來做到這一點。

編輯

我現在用的動詞 「保存」($資源)的angularjs。我怎麼能設置標題「application/x-www-form-urlencoded」並且序列化?

+0

你的意思是將它序列化爲'application/x-www-form-urlencoded'格式?這裏有一個簡單的lib可用 - https://github.com/iambumblehead/form-urlencoded – Phil 2015-04-01 02:50:10

+0

可能的重複[如何使用$ http在AngularJS中POST urlencoded表單數據?](http://stackoverflow.com/questions/ 24710503/how-do-i-post-urlencoded-form-data-with-http-in-angularjs) – Phil 2015-04-01 02:52:53

+0

在Angular afaik中沒有內置的工具。但你爲什麼要這麼做?您可以發送任何GET請求,而無需手動將數據添加到URL中。 – floribon 2015-04-01 02:55:49

回答

5

純JavaScript可以做到這一點就好了:

function serializeObj(obj) { 
 
    var result = []; 
 

 
    for (var property in obj) 
 
     result.push(encodeURIComponent(property) + "=" + encodeURIComponent(obj[property])); 
 

 
    return result.join("&"); 
 
} 
 

 
var user = { 
 
    username: 'ronald.araujo', 
 
    password: '123456' 
 
}; 
 

 
var serialized = serializeObj(user); 
 
console.log(serialized); //username=ronald.araujo&password=123456

鏈接到原來的答案:How do I POST urlencoded form data with $http in AngularJS?

0

您可以使用$httpParamSerializerJQLike;

.controller(function($http, $httpParamSerializerJQLike) { 
    //... 

var serializedUser = $httpParamSerializerJQLike(user); 

}); 

你可以看到$httpParamSerializerJQLike文檔here