maandelijkse archieven: Januari 2015

HTTP 406 Fout bij het gebruik van hoekige $http.get tegen SharePoint REST eindpunten

Update: Marc AD ndersson om erop te wijzen dit grote stuk van info: http://blogs.Office.com/2014/08/13/JSON-Light-Support-rest-SharePoint-API-Released/. Dat verklaart veel :).

Dat is misschien wel de ergste titel van een blogpost ooit! Hoe dan ook.

Ik meestal doe alle van mijn prototyping tegen een O365 exemplaar. Ik heb mijn persoonlijke exemplaar, zodat ik niet hoef te worden bezorgd op het gebied van iemand anders. Als een terzijde-Onthoud wanneer wij uitgevoerd rond virtuele machines op onze laptops met mos-SQL Server, IIS, beslissende Hyper-V vs. VMWare? Hoe dan ook...

Ik had ontwikkeld een app gebruikt Angular in deze omgeving die doet, onder andere, Dit:

$http.Get(serverUrl)
.succes(functie(gegevens, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(functie(theResult) {

// en zo verder en zo schuim

Dit werkte prima in twee verschillende SharePoint online omgevingen. Echter, Toen mijn collega het ported aan de aanleg van een Cloudshare, Hij kreeg een HTTP 406 fout (die was de eerste keer dat ik ooit kreeg die ene, dus... yay, Denk ik). We heb een beetje van het onderzoek en merkte dat de "Accept" header uitgeschakeld was. SharePoint online was perfect gelukkig met:

Accepteren: application/json

Behalve het cloudshare exemplaar (Wat is SP op prem, gehost op een virtuele server) wilde de klassieke "odata = verbose" toegevoegd ook:

Accepteren: application/json;odata = verbose

Om dat te bevestigen, Wij toegevoegd de kop als zodanig:

var config = {headers: {
'Accepteren': ' application/json;odata = verbose'
}
};

$http.Get(serverUrl,config)
.succes(functie(gegevens, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(functie(theResult) {

// en zo verder en zo schuim

Die verlost van de 406, maar het ook de indeling van de reactie gewijzigd. Het was meer... uitgebreide. (haha!) Meer veranderingen nodig waren en hier is het eindresultaat:

var config = {headers: {
'Accepteren': ' application/json;odata = verbose'
}
};

$http.Get(serverUrl,config)
.succes(functie(gegevens, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.d.Results.forEach(functie(theResult) {

// en zo verder en zo schuim

Dit alleen omgezet in een 30 minuut probleem voor ons, Dus wij lucked uit. Hopelijk vindt iemand dit nuttig.

</einde>

How-to: Inschakelen meerdere hoekige SharePoint-webonderdelen op dezelfde pagina

Deze blog posten wordt beschreven hoe u meerdere kan hebben Angular.js op basis van SharePoint-webonderdelen (waarnaar wordt verwezen via een webonderdeel Inhoudseditor) op dezelfde pagina. Ik roep een webonderdeel Inhoudseditor (CEWP) waarin wordt verwezen naar JavaScript gebouwd met behulp van het Angular.js kader een 'hoekige webonderdeel.'

Hoekige de bootstrap proces is super eenvoudig en zowat elke voorbeeld u op de internets vindt gaat iets als dit:

<HTML-ng-app = 'Mijntoep'>

<bla /><bla /><bla />

</HTML>

Dit breekt, echter, Als u wilt inschakelen meerdere CEWP die meerdere hoekige webonderdelen op dezelfde pagina. Hoekige zal alleen automatisch bootstrap tegen de eerste ng-app richtlijn het gezochte – ten minste vanaf hoekige versie 1.3.6. De oplossing is vrij eenvoudig-handmatig bootstrap uw code in plaats daarvan. Het bovenstaande nu verandert in iets als dit:

<lichaam>
<d
IV id =”bootstrapHere” ng-controller =”myController als theController”>
<bla /><bla /><bla />
</div>
</lichaam>

<script src =”//Ajax.googleapis.com/Ajax/libs/angularjs/1.3.6/angular.js”></script>

<script>
angular.bootstrap(angular.element(document.getElementById(“bootstrapHere”)),['Mijntoep']);
</script>

In principe, in plaats van met behulp van ng-app op het element te doen uw bootstrappen, u klap een ID naar dat element. Vervolgens, Gebruik de bootstrap() methode op hoekige zelf om te controleren het bootstrappen verwerken op run-time. Ik heb dit met drie verschillende hoekige webonderdelen op dezelfde pagina getest en het werkt een charme.

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin