Ealon
Ealon

Reputation: 4908

Angular $http read String?

The back end guy wants to send me a string, which will be returned by $http.post. If he sends me something like "success", I will get error like "parsing Json failed". I want him to wrap the string into object like "{"message": "success"}", which works fine. But other back end guys say that front end should comply with back end, so they will just send me the string. Is there any way that I can read the string?

This is the code I use if he sends me "{"message": "success"}", which works perfectly:

AdminService.saveCache(cache)
    .then(function(data) {
        var data = data.data;

        if (data.message == "success") {
            scope.successMessage = "Cache hours saved successfully";
        } else {
            scope.errorMessage = data.message;
        }
    }, function() {
        scope.errorMessage = "Submission failed";
    });

Upvotes: 0

Views: 772

Answers (2)

truthseeker
truthseeker

Reputation: 91

the API Response Content-Type should be set to text/plain; and use POSTMAN to verify, it would save you a lot of headache

Upvotes: 0

Neothorn
Neothorn

Reputation: 339

By default angular tries to detect if a http response contains JSON. Sometimes this detection fails and you get such an error as you described in your question.

You can avoid this behavior for a single request if you override the response transformation by providing an transformResponse property for on the configuration object passed to the request:

$http({
  url: '...',
  method: 'POST',
  //Just return original response from server without parsing
  transformResponse: [function (data, headers) {
        return data;
    }];
});

Alternatively you can change the default behavior for all your app's http requests by overriding the default response transformation:

myApp.config('$httpProvider', function($httpProvider) {
    $httpProvider.defaults.transformResponse = [function (data, headers) {
        return data;
    }];
}]);

For more information see API Reference $http section "Transforming Requests and Responses"

Upvotes: 1

Related Questions