1

je l'action suivante dans mon MVC Controller:données get angulaire MVC JsonResult

[HttpPost] 
public JsonResult Save(TestModel model) 
{ 
    var newId = _myService.CreateItem(model); 
    return Json(newId); 
} 

Cela va et retourne une carte d'identité, je le vois revenir dans Fiddler par exemple en 42. Mais mon code angulaire il doesn N'obtient pas le nombre, mais la valeur retournée est montrée comme données: b, qui contient une promesse. Y a-t-il un moyen d'obtenir le nombre retourné dans les données de la méthode de succès? Mon code angulaire est ci-dessous:

vm.save = function() { 
TestRepository.save(vm.MyData).$promise.then(
    function (data) { 
     // Here data is returned as data : b, not the number 
    }, 
    function() { 
     alert('An error occurred while creating this record.'); 
    }); 
} 

mon service est

function TestRepository($resource) { 
return { 
    save: function (item) { 
     return $resource('/mysite/setup/Save').save(item); 
    } 
} 

Le service est en mesure d'appeler l'action, que je vois le code frappé mes points d'arrêt, je peux voir newID également mis à 42, mais je ne le vois jamais revenir du côté angulaire.

+0

Pouvez-vous poster le résultat de 'console.log (données);' – Hackerman

+0

@Hackerman qui imprime b {promesse de $: d, Résolus $: true} Si je retourne un objet au lieu du simple numéro, les données contiennent l'objet, peut-être que le nombre ne sera pas renvoyé en JSON, car Fiddler montre que la réponse est juste 42, pas au format JSON. – Paritosh

Répondre

3

$resource doesn't support primitive response

Comme $resource généralement utilisé pour se connecter avec un service RESTful faire envoyer des données dans l'objet bien formé, qui est ainsi tout API fait. L'envoi de données depuis l'API dans un type primitif décourage les utilisateurs d'utiliser un mauvais modèle. Idéalement, il ne devrait retourner que l'objet JSON.

[HttpPost] 
public JsonResult Save(TestModel model) 
{ 
    var newId = _myService.CreateItem(model); 
    return Json(new {Id = newId}); 
} 

code

vm.save = function() { 
    TestRepository.save(vm.MyData).$promise.then(
     function (data) { 
      console.log(data.Id) 
     }, 
     function() { 
      alert('An error occurred while creating this record.'); 
     } 
    ); 
}