Månedlige Arkiver: Januar 2015

HTTP 406 Feil ved kantete $http.get mot SharePoint resten endepunkt

Oppdateringen: Marc AD ndersson påpekt denne store stykke informasjon: http://blogs.Office.com/2014/08/13/JSON-Light-support-rest-SharePoint-API-Released/. Det forklarer mye :).

Det kan være verste tittelen på et blogginnlegg noensinne! Anyhoo.

Jeg vanligvis gjør alle mine prototyping mot en O365-forekomst. Jeg har min personlige forekomst slik at jeg ikke trenger å være bekymret påvirker andre. Som en side-Husk når vi kaller båret rundt virtuelle maskiner på vår bærbare med MOSS-SQL Server, IIS, bestemme Hyper-V vs. VMWare? Anyhoo...

Jeg hadde utviklet en app med Angular i dette miljøet som gjør, blant annet, Dette:

$http.Get(serverUrl)
.suksess(funksjonen(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funksjonen(theResult) {

// og så videre og så skum

Dette arbeidet rettferdig fin i to forskjellige SharePoint online miljøer. Men, Når min kollega portet den til en Cloudshare, Han fikk en HTTP 406 feil (som var første gang jeg noen gang fikk den, så... yay, jeg tror det). Vi gjorde litt research og la merke til at overskriften "Godta" var av. SharePoint online var helt fornøyd med:

Godta: programmet/json

Men cloudshare forekomsten (SP er på prem, vert for en virtuell server) ville klassiske "odata = utførlig" lagt i tillegg:

Godta: programmet/json;OData = detaljert

Å fastsette det, vi lagt til overskriften slik:

var config = {overskrifter: {
'Akseptere': "program/json;OData = utførlig '
}
};

$http.Get(serverUrl,config)
.suksess(funksjonen(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funksjonen(theResult) {

// og så videre og så skum

Som ble kvitt den 406, men det også endret formatet på svaret. Det var mer... detaljert. (haha!) Flere endringer er nødvendig og her er resultatet:

var config = {overskrifter: {
'Akseptere': "program/json;OData = utførlig '
}
};

$http.Get(serverUrl,config)
.suksess(funksjonen(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.d.results.forEach(funksjonen(theResult) {

// og så videre og så skum

Dette bare omgjort til en 30 minutt problem for oss, så vi lucked ut. Forhåpentligvis finner noen dette nyttig.

</slutten>

Slik gjør du det: Aktiver flere kantete SharePoint-webdeler på samme side

Denne bloggen innlegg beskriver hvordan du kan ha flere Angular.js basert SharePoint-webdeler (referert via en webdel for innholdsredigering) på samme side. Jeg kaller en webdel for innholdsredigering (CEWP) som refererer til JavaScript bygget med Angular.js rammen en "kantete-webdel."

Angular's bootstrap prosessen er superenkelt og omtrent alle eksempel du finner på internets går noe slikt:

<HTML ng-app = 'myApp'>

<blah /><blah /><blah />

</HTML>

Dette bryter ned, men, Hvis du vil aktivere flere CEWP som representerer flere kantete webdeler på samme side. Angular vil automatisk bootstrap mot direktivet for første ng-app det finner – minst i kantete versjon 1.3.6. Løsningen er ganske enkel-bootstrap manuelt koden i stedet. Ovennevnte nå endres til noe som dette:

<kroppen>
<d
IV id =”bootstrapHere” ng-kontrolleren =”myController som theController”>
<blah /><blah /><blah />
</div>
</kroppen>

<script src =”//Ajax.googleapis.com/AJAX/libs/angularjs/1.3.6/Angular.js”></skriptet>

<skriptet>
Angular.bootstrap(Angular.element(document.getElementById(“bootstrapHere”)),['myApp']);
</skriptet>

I utgangspunktet, istedet for benytter ng-app på elementet for å gjøre din bootstrapping, du klapse en ID på dette elementet. Deretter, Bruk inn bootstrap() metoden på kantete selv kontrollere bootstrapping behandle under kjøring. Jeg har testet dette med tre forskjellige kantete webdeler på samme side og det fungerer en sjarm.

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin