2014-02-14 3 views
1

Сначала извините, мой плохой английский.Угловая + Sharepoint Rest no working

Когда я пытаюсь получить некоторые предметы из моего списка, это не сработает. Я получил ошибку «0x2ee7 Не удалось разрешить имя сервера» в консоли ie10. Когда я выполняю весь путь в Dev Http в Chrome, я все в порядке.

Я думаю, это проблема в моем запросе, потому что я получил сообщение об ошибке со своим собственным скриптом.

код в редакторе сценариев в моей тестовой страницы в SharePoint Online.This мой код:

<div ng-app> 
     <b>AngularJS + Sharepoint!</b> 
     <div ng-controller="MyController" class="ng-scope"> 
      <div ng-repeat="p in Products"> 
       Product Name: {{p.ProductName}} <br /> 
       Rate: Rs. {{p.ProductRate}} <br /> 
       <hr /> 
      </div> 
     </div> 
    </div> 

    <script>  
     function MyController($scope) { 
      $scope.loadREST = function() { 
       jQuery.ajax({ 
        url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('ProductList')/items?$select=ProductName,ProductRate", 
        type: "GET", 
        headers: { "Accept": "application/json;odata=verbose" }, 
        success: function (data) { 
         var newData = []; 
         jQuery.each(data.d.results, function (index, value) { 
          newData.push({ ProductName: value.ProductName, ProductRate: value.ProductRate}); 
         }); 
         $scope.$apply(function() { 
          $scope.Products = newData; 
         }); 
        }, 
        error: function() { 
         //alert(_spPageContextInfo.webAbsoluteUrl); 
         alert("erro de conexão"); 
        } 
       }); 
      }; 
      $scope.loadREST(); 
     } 
    </script> 
+0

разрешение вашего 'url' поля в вашем XHR вызова. на другой ноте ... используйте '$ http.get' вместо' jQuery.ajax() '. это более подходит для работы с угловыми работами и возвращает объект обещания, который может быть очень полезным. –

+0

Тест с полным URL-адресом отлично работает в Chrome Dev Http, но когда я помещаю тот же url в свой код, это не так. –

+0

Какая ошибка показывает ваша консоль? Звучит как проблема аутентификации, если мой опыт работы с sp научил меня чему-то –

ответ

1

Если вы используете angular.js версии 1.3.0 или выше угловой больше не будет выглядеть для контроллеров на окно См. 3f2232b5 для более подробной информации.

Таким образом, контроллер должен быть инициализирован следующим образом:

angular.module('myApp', []).controller('ProductsController', [function() { 
    // ... 
}]); 

вместо

function ProductsController() { 
    // ... 
} 

Некоторые еще предложения:

  • Предпочитают $http service над jQuery.ajax() в угловых приложениях

Модифицированный пример

Html

<div ng-app="spApp"> 
    <b>AngularJS + Sharepoint!</b> 
    <div ng-controller="ProductsController" class="ng-scope"> 
     <div ng-repeat="p in Products"> 
      Product Name: {{p.ProductName}} <br /> 
      Rate: Rs. {{p.ProductRate}} <br /> 
      <hr /> 
     </div> 
    </div> 
</div> 

JS тест

var app = angular.module('spApp',[]); 

app.controller('ProductsController', function($scope,$http) { 
    $scope.Products = []; 
    $scope.getProducts = function() { 
     $http({method : 'GET',url : _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('ProductList')/items?$select=ProductName,ProductRate", headers: { 'Accept':'application/json;odata=verbose' }}) 
      .success(function(data, status) { 
       $scope.Products = data.d.results; 
      }) 
      .error(function(data, status) { 
       console.log("An error occured"); 
      }); 
     } 

    $scope.getProducts(); 
});