AngularJS使用$http和可选数据字段
我使用以下函数将数据发布到API端点。我现在遇到的问题是,$http数据字段是根据函数postdate param选择性地发送的。当我试着运行这段代码时,我得到了一个错误AngularJS使用$http和可选数据字段,angularjs,Angularjs,我使用以下函数将数据发布到API端点。我现在遇到的问题是,$http数据字段是根据函数postdate param选择性地发送的。当我试着运行这段代码时,我得到了一个错误 Uncaught SyntaxError: Unexpected token ( 有人能告诉我我做错了什么以及如何解决这个问题吗?谢谢 postClient: function(postdata, dataobj, Token){ var Deferred = $q.defer();
Uncaught SyntaxError: Unexpected token (
有人能告诉我我做错了什么以及如何解决这个问题吗?谢谢
postClient: function(postdata, dataobj, Token){
var Deferred = $q.defer();
$http({ method: 'POST',
url: 'http://api.domain.com/private/clients',
if(postdate =='1'){
data: dataobj,
}
headers: { 'Token' : Token }
}).success(function(data,status,headers,config){
Deferred.resolve(data);
}).error(function(data,status,headers,config){
Deferred.reject(status);
});
return Deferred.promise;
}
您已将
if
语句放置在对象文本中。开始键入时:
{ method: 'POST',
...
}
您正在指定一个对象。法律语法规定,值可以是标识符(您拥有的)或字符串。值可以是合法的Javascript值,例如其他数字、字符串、其他Javascript对象和函数。(在本例中,当您发布要转换为JSON的内容时,您不能拥有函数)
很难看出你的意图。如果postdate=='1',您的意思是发布一个空对象吗?或者你的意思是发布一个空字符串
下面是一个如何处理空对象的示例。我已将if语句移出函数体,而不是对象文本,并将其保存在变量中:
var Deferred = $q.defer();
var data = {};
if (postdate === '1') {
data = dataObj;
}
$http({ method: 'POST',
url: 'http://api.domain.com/private/clients',
data: data,
headers: { 'Token' : Token }
...
如果要跳过
data:dataObject
行,则可以angular.extend()
扩展config
对象,因此如果data
对象为空,则结果对象为空<代码>配置保持不变
var Deferred = $q.defer(),
data = {},
config = {
method: 'POST',
url: 'http://api.domain.com/private/clients',
headers: {
'Token': Token
}
}
if (postdate === '1') {
data = dataObj;
}
$http(angular.extend(config, data));
这还不算是有效的Javascript。你把一个IF块放在一个对象声明的中间。@ IVNNI我可以看到这是一个明显的新手混淆点,因此是有效的。question@DougT. 我只是不知道这个问题如何解决OP以外的任何人的问题。我的意图是排除数据:dataobj,如果postdate='1',则完全行。您的方法很完美,但我想知道是否有一种方法不发送数据:如果dataobj值不是1,那么使用dataobj而不是空对象发送数据?谢谢,这是你那句话的错误假设。配置保持不变。根据角度文档“扩展方法,通过将所有属性从
src
对象*复制到dst
来扩展目标对象dst
。您可以指定多个src
对象。”太棒了!这正是我想要的:)非常感谢
var Deferred = $q.defer(),
data = {},
config = {
method: 'POST',
url: 'http://api.domain.com/private/clients',
headers: {
'Token': Token
}
}
if (postdate === '1') {
data = dataObj;
}
$http(angular.extend(config, data));