javascript - AngularJS 中的动态 http post 参数名称

标签 javascript angularjs http

我正在使用 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();
  })
}

但它发送到服务器的只是:

Sent data

有什么可行的方法吗?

最佳答案

您需要修改传递给参数的对象。将属性添加到从 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/

相关文章:

javascript - react native 选项卡导航器 : How to let icon overflow tabbar?

javascript - AngularJS $state.go 传递的参数始终为空值

http - Google Calendar API - 只能更新一次事件

json - REST 授权 : Username/Password in Authorization Header vs JSON body

javascript - 将字符串转换为数字 Javascript

javascript - 如何在 D3 中访问 JSON 时添加授权 header

javascript - 如何将编辑后的数据提交到AngularJS中的对象?

javascript - angular.controller 是否总是采用匿名函数

ruby-on-rails - Rails Put 与 Post

使用for循环的Javascript图像幻灯片