How to get Odata Next Link from the returned JSON object using angular $http service

11,988

Solution 1

I had the same problem, more or less. I guess it has got to do with JavaScript objects and how their properties are referred to. The reference

data.odata.nextLink

would mean there is a property "odata" with a sub-property/field "nextLink". This is not the case, "odata.nextLink" is the name of the property. I don't know why OData is like this.

I got the contents of this property by using a string reference i.e.

data['odata.nextLink']

Don't know if there is some drawback, but seems to work...

Solution 2

    using Newtonsoft.Json;     
    [JsonProperty("@odata.nextLink")]
    public string nextPage { get; set; }

Solution 3

I got it to work using

theReturnedObject['@odata.nextLink']
Share:
11,988
sohel101091
Author by

sohel101091

Updated on July 02, 2022

Comments

  • sohel101091
    sohel101091 almost 2 years

    I have implemented Odata query syntax for my web api. I am successfully able to return only the first 10 results and the link for the further results. However I am unable to extract this link from the JSON object that is returned by the server using my angularjs front end.

    Say the server is responding as follows:

    {
      "odata.metadata":"http://localhost:60497/odata/$metadata#tables","value":[
        {
          "id":001,"name":"abc"
        },{
          "id":002,"name":"pqr"
        },{
          "id":003,"name":"xyz"
        },{
          .
          .
          .
      ],"odata.nextLink":"http://localhost:60497/odata/tables?$skip=10"
    }
    

    Now I am displaying the data by using the success method of $http by assigning the returned data to a variable and using ng-repeat. I am assigning it as follows:

    .success(function(data)){
      $scope.foo = data.value;
    }
    

    However when I try to access the next link using:

    $scope.link = data.odata.nextLink;
    

    within the success method it gives me an error. What am I missing over here? How else can I access the link returned? Is there any other method to implement server side paging?