Javascript angular.js非获取实例操作返回错误:value.push不是函数

Javascript angular.js非获取实例操作返回错误:value.push不是函数,javascript,json,angularjs,Javascript,Json,Angularjs,HTTP结果代码为200,并为$create返回正确的数据。 “on success”函数调用失败,错误如下: var user = $resource('/user/:action',{},{ create: {method:'POST',isArray:true, params:{action:'save'}}, }); user.$create(function(userData) { //do something

HTTP结果代码为200,并为$create返回正确的数据。 “on success”函数调用失败,错误如下:

    var user = $resource('/user/:action',{},{
        create: {method:'POST',isArray:true, params:{action:'save'}},
    });
    user.$create(function(userData) {
    //do something          
    });

谢谢

我也遇到了同样的问题,$resource对象在发出post请求时无法接受数组响应,或者这可能是一个bug。无论如何,我可以通过将服务器的数组响应转换为json响应来解决这个问题。因此,在您的情况下,服务器响应应该是这样的-->

您误用了:非GET类操作唯一需要的参数是
postData
对象。从文档中:

类对象或实例对象上的操作方法可以是 使用以下参数调用:

[……]

  • 非获取“类”操作:
    Resource.action([parameters]、postData、[success]、[error])
…但您只传递回调:

{ "response" : [{
     "hashcode": "0",
     "object-type": "aa",
}]}
将数据对象作为第一个参数传递,应该可以:

user.$create(function(userData) {
    //do something          
});

在使用instance post方法时,我遇到了同样的问题:

user.$create( {} , function(userData) {
    //do something
});
但是,使用非基于实例的方法,post的结果将在数组中正确返回:

// Resource definition
var MyResource = $resource('/api/myresource/:id', 
  { id: '@id' },
  { save: {method: 'POST', isArray: true} }
);
// ...
var myInstance = new MyResource();
myInstance.$save(attributes).then(...);  // Expects result to be object

在哪里使用变量“value”?哪里都没有。我想这是AngularIs用户的错别字?顺便说一句,有趣的是,你问了一个关于value.push的问题,但你从来没有在代码中显示它。@Shomz是的,这是一个打字错误,是的,这很有趣-但它来自角度代码,而不是我的:-)这是一个类操作,不是实例操作。你是对的。我必须在服务器端重新实现这一点,这只是为了提高性能。真烦人。谢谢。@JRun我实际上使用了
transformResponse
字段将数组包装到一个对象中,并且不需要在服务器上更改任何内容。这对我来说很有效。在资源实例中使用$save时,我始终有一个“push”不是一个函数,好像它不理解http响应中的数组一样。使用非基于实例的方法也对我有效。那么,这种行为是一个bug还是设计意图?
user.$create( {} , function(userData) {
    //do something
});
// Resource definition
var MyResource = $resource('/api/myresource/:id', 
  { id: '@id' },
  { save: {method: 'POST', isArray: true} }
);
// ...
var myInstance = new MyResource();
myInstance.$save(attributes).then(...);  // Expects result to be object
// Resource definition as above ...
MyResource.save(attributes).$promise.then(...);  // Expects result to be array