AngularJS

v1.2.19 http POST Format

這是在開發 abc-mart 的時候遇到的問題,想要把登入的跟註冊的 data 換成 從 GET 換成 POST,但是一直遇到格式是 Request Payload, 不是 FormData 的問題

這是準備好的 data:

var config = {
    params: {
        type: "email",
        email: self.user.username,
        password: self.user.password
    }
};
原本的 code 如下:

這樣丟的時候,他會把 data 變成 query string 接在網址後面,詳細資料可以參考官方對於 configuration object 的說明

$http.post("./api/memberLogin.php", null, config)
.success(function (data, status, headers, config){
})
.error(function (data, status, headers, config){
});
後來的 code 如下:
$http({
    method: 'POST',
    url: './api/memberLogin.php',
    data: $.param(config.params),
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
})
.success(function (data, status, headers, config){
})
.error(function (data, status, headers, config){
});
結論

完全是參考 這篇文章 的說明,主要的關鍵是要加上 headers: {'Content-Type': 'application/x-www-form-urlencoded'} 且要手動轉換 data 的格式。

本來 Angularjs 提供兩個功能可以轉換 $httpParamSerializerJQLike$httpParamSerializer 但是 v1.2.19 太舊了,什麼都不能用。

最後只好用 jQuery 的 $.param() 功能去轉換!

results matching ""

    No results matching ""