Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 251
sohel101091 Avatar asked May 04 '15 17:05

sohel101091


3 Answers

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...

like image 102
Samuli Neuvonen Avatar answered Nov 16 '22 07:11

Samuli Neuvonen


    using Newtonsoft.Json;     
    [JsonProperty("@odata.nextLink")]
    public string nextPage { get; set; }
like image 37
Phillip T. Avatar answered Nov 16 '22 05:11

Phillip T.


I got it to work using

theReturnedObject['@odata.nextLink']
like image 32
Jacob West Avatar answered Nov 16 '22 05:11

Jacob West