javascript - WebApi-metode med enkelt værdi og AngularJs $http json-håndtering
Jeg støder på et problem, og jeg er løbet tør for idéer, jeg har brug for vejledning mod oprindelsen og/eller løsningen:
Serverside
Jeg tilføjede den standard Microsoft Web Api Controller klasse "ValuesController", som ser sådan ud:
public class ValuesController : ApiController
{
public string Get(int id){ return "value"; }
...
Kundeside
I min AngularJS Controller-funktion har jeg en simpel get
$http({method:'GET',url: '/api/values/1'}).success(function(data){
$scope.value =data;
})
HTML'en ser sådan ud:
<input type="text" ng-model="value" />
Det mærkelige (problemet) er, at jeg får: "value" i mit input i stedet for bare value (uden anførselstegn). For at undgå misforståelser får jeg dette:
I stedet for dette:
Og selvfølgelig er spørgsmålene: hvorfor?? og hvordan fikser jeg det*?
*forhåbentlig vil svaret ikke være at returnere et objekt i stedet for en simpel streng :)
Svar #1
Jeg har indtrykket af, at dette skyldes sikkerhedssårbarheder i JSON-formatet. I dokumentationen af $http-tjenesten er der et afsnit kaldet JSON-sårbarhedsbeskyttelse, som foreslår, at Angular tager nogle forholdsregler for at undgå et angreb.
De anbefaler læsning af følgende artikel: Anatomy of a Subtle JSON Vulnerability, som så vidt jeg kan se, dykker ned i en sag, der ligner din.
Bundlinjen er, jeg tror, du bliver nødt til at returnere et fuldt JSON-objekt og ikke bare en streng. Et alternativ er at sørge for, at du får et JSON-objekt, ved at gøre
$scope.value = JSON.parse(value)
Svar #2
Den foretrukne (Angular-leverede løsning) er
$scope.value = angular.fromJson(data);
