6

I am encountering an issue and I ran out of ideas, I need some guidance towards the origin and/or the solution:

Server Side

I added the standard Microsoft Web Api Controller class "ValuesController" which looks like this:

public class ValuesController : ApiController
{              
   public string Get(int id){ return "value"; }
   ...

Client Side

In my AngularJS Controller function I have a simple get

$http({method:'GET',url: '/api/values/1'}).success(function(data){
        $scope.value  =data;
    })

The HTML looks like this:

  <input type="text" ng-model="value" />

The weird thing(the issue) is that I get: "value" in my input instead of just value (no quotes). To avoid misunderstandings, I am getting this:

enter image description here

Instead of this:

enter image description here

And of course the questions are: why?? and how do I fix it*?

*hopefully the answer will not be returning an object instead of a simple string :)

1

2 Answers 2

5

I have the impression that this is due to security vulnerabilities in the JSON format. In the documentation of the $http service there is section called JSON Vulnerability Protection that suggests that Angular takes a few precautions to avoid an attack.

They recommend the reading of the following article: Anatomy of a Subtle JSON Vulnerability which as far as I can see delves into a case similar to yours.

Bottom line, I think you will have to return a full JSON object and not just a string. An alternative is to make sure you are getting a JSON object, by doing

$scope.value = JSON.parse(value)
Sign up to request clarification or add additional context in comments.

1 Comment

JSON.parse() solved a similar issue for me. The response from the server seemed fine, however it did not work on the client, until I added a call to JSON.parse().
2

The preferred (Angular provided solution) is

$scope.value = angular.fromJson(data);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.