AngularJS

时间:2016-09-11 10:41:21

标签: javascript angularjs http

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

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

Sent data

有没有办法做到这一点?

1 个答案:

答案 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);