我正在使用API来更新配置文件,通过在请求参数中添加昵称,电子邮件,电话或密码,每个都将在数据库中更新。
我想根据用户的选择每次传递其中一个,例如当我想更新Nick名称时:
{
"nickname": "alifa",
"device_id": "chrome",
"device_model": "browser",
"device_os": "angularJS"
}
或更新电子邮件:
{
"email": "info@example.com",
"device_id": "chrome",
"device_model": "browser",
"device_os": "angularJS"
}
我想通过将属性名称和属性值传递给函数来执行此操作,它将创建一个对象并发送http post请求:
this.updateDetails = function(dataName, dataValue){
Loader.global.show();
var data = $.param({
device_id: app.device_id,
device_os: app.device_os,
device_model: app.device_model
});
data[dataName] = dataValue;
console.log(data);
return $http.post(app.baseUrl + 'profile/' , data).success(function(){
Loader.global.hide();
}).error(function(){
Loader.global.hide();
})
}
但它发送给服务器的只是:
有没有办法做到这一点?
答案 0 :(得分:1)
您需要修改传递给param的对象。将属性添加到从param中获取的字符串是毫无意义的。
var data = {
device_id: app.device_id,
device_os: app.device_os,
device_model: app.device_model
};
data[dataName] = dataValue;
var encoded_data = $.param(data);