2016-02-29 101 views
5

我需要從我的angularjs應用程序發送一個json數組到一個restful api。我正在使用ngresources來執行此操作。 從現在開始,我已經能夠發佈並放置單個對象而沒有問題,但現在我需要發送一個對象數組,而我不能。

我試圖從外部休息應用程序進行調用,它工作正常,但從我的角應用程序是不可能的。我有用JSON.stringify解析對象,但仍然無法正常工作。我在$ resources上設置了頭部'Content-Type':'application/json'。

這是我該怎麼辦negresource:

.factory('AddSignosClinicos', function ($resource) { 

    return $resource(dondeapuntar + "/Rest/Pacientedatossignosclinicos.svc/pACIENTEDATOSSIGNOSCLINICOSList/Add", {}, { 
     create: { method: "POST", headers: { 'Content-Type': 'application/json', params: {} } } 
    }); 
}) 

這是我如何調用該函數:

var objeto = JSON.stringify(SignosClinicosGuardar); 

var signosClinicosService = new AddSignosClinicos(objeto); 

signosClinicosService.$create().then(function() {}); 

我做objeto的的console.log,而且是正確的JSON數組。

有什麼想法?

非常感謝您

編輯

我已經試過$ HTTP組件的發佈請求,和它的工作!我不明白爲什麼不與ngResources工作,這是我的$ HTTP代碼:

$http({ 
      url: 'http://localhost:1046/Rest/Pacientedatossignosclinicos.svc/pACIENTEDATOSSIGNOSCLINICOSList/Add', 
      method: "POST", 
      data: SignosClinicosGuardar, 
      headers: { 
       'Content-Type': 'application/json; charset=UTF-8' 
      } 
     }); 
+0

提供一段代碼,深入挖掘json stringify錯誤請。 – morels

+0

哦,對不起。我已經添加了上面的代碼。謝謝 –

+0

嘗試在返回的$資源中添加選項'isArray:true'。 [請參閱$資源上的文檔](https://docs.angularjs.org/api/ngResource/service/$resource) – Fiver

回答

5

要發佈對象的數組,你需要選擇isArray: true添加到您的$資源:

.factory('AddSignosClinicos', function ($resource) { 
    return $resource(
     "url-string-here", 
     {}, 
     { 
      create: { 
       method: "POST", 
       isArray: true 
      } 
     } 
    ); 
}) 

調用新的create功能會是這個樣子:

//some list of your object instances 
var array_of_objects = ... 

var saved_objects = AddSignosClinicos.create(
    array_of_objects 
); 

saved_objects.$promise.then(function() { 
    ... 
}); 

注意,create VS $create,沒有$

See the Angular documentation on $resource

+0

這也沒有奏效。謝謝 –

+0

我已經添加了一些顯示基本用法的僞代碼,因爲我不確定是否正確調用資源方法。 – Fiver

+0

你說得對。我打電話給$資源錯誤。萬分感謝! :) –