我正在使用 API 来更新个人资料,方法是在请求参数中添加昵称、电子邮件、电话或密码,其中每个参数都将在数据库中更新。
我想根据用户的选择每次传递其中一个,例如当我想更新昵称时:
{
"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();
})
}
但它发送到服务器的只是:
有什么可行的方法吗?
最佳答案
您需要修改传递给参数的对象。将属性添加到从 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);
关于javascript - AngularJS 中的动态 http post 参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39435215/