Juan
Juan

Reputation: 61

Translating a rest API call from angular to jQuery

Apologies if worded awkwardly, but I have to make an rest API call using jQuery. I've already made the call using angularJS before, but for this case I can't use that. I tried translating it to jQuery but I'm not getting the same results. Is there anything I'm doing wrong or am I missing information? I'm fairly new to jQuery so I feel as if I'm missing something crucial or misunderstood something.

Working code with angularJS:

var req = {
        method: 'POST',
        url: 'https://fakeurl.com/rest/v1/portal/user/' + $scope.email.value,
        headers:{
            'Content-Type': 'application/json',
            'Header_1': 'Yes',
            'x-access-token': 'glsFromWebsite' //$scope.authInfo.token
        }
    };

    restCall($http, req).then(function (res) {

        // check for error even though 200 response
        if (res.error) {
            console.error("Error reported...");    
        } else {
`         //enter success code here
        }
    });

var restCall = function(http, req) {
  var _url = getBaseUrl() + req.url;
  req.url = _url;

  return new Promise(function(fulfill, reject) {
    try {

      http(req).then(function (res) {

        // check for error even though 200 response
        if (res.data.error) {
          if (res.data.error === '601') {
            console.error('Token is invalid or has expired');
          } else {
            console.error("Error from end point: " + res.data.error);
          }
        } 
        fulfill(res.data);

      }, function(err) {
        console.error('Error calling rest endpoint',err);
        reject();
      });  

    } catch (ex) {
      console.error('Exception calling rest endpoint',ex);
      reject(ex);
    }
  }); 
};

My failing jQuery code:

var processCreate = function (email) {

    $.ajax({
        url: 'https://fakeurl.com/rest/v1/portal/user/' + email.value,
        type: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Header_1': 'Yes',
            'x-access-token': 'glsFromWebsite' //$scope.authInfo.token
        },
        success: function (res, a, b) {
            if (res === 'NOT FOUND') {
                //code that runs when this case is true
            } else {
                //code that runs when this case is false
            }
        },
        error: function () {
            console.error("Error...");
        }
    });
}

Upvotes: 0

Views: 331

Answers (1)

Abdul Moiz Khan
Abdul Moiz Khan

Reputation: 703

Try making an ajax call like this

var processCreate = function (email) {           
                var authHeaders = {};
                authHeaders.Authorization = 'Bearer ' + 'glsFromWebsite';

               $.ajax({
                    url: 'https://fakeurl.com/rest/v1/portal/user/' + email.value,
                    type: "POST",
                    cache: false,
                    dataType : "json",
                    contentType: "application/json; charset=utf-8",
                    headers: authHeaders,
                    success: function (data) {

                        //console.log(data);
                        if (data === 'NOT FOUND') {
                          //code that runs when this case is true
                        } else {
                          //code that runs when this case is false
                        }
                    },
                    error: function (xhr) {
                        console.log(xhr);
                    }
                });
}

Upvotes: 1

Related Questions