Monthly Archives: Janvāris 2015

HTTP 406 Kļūda, lietojot leņķa $http.get pret SharePoint atpūtas beigu punktiem

Atjauninājums: Marc AD ndersson norādīja uz šo lielisko info gabals: http://Blogs.Office.com/2014/08/13/JSON-Light-Support-Rest-SharePoint-API-Released/. Tas izskaidro daudz :).

Tas var būt sliktākais nosaukums blog post jebkad! Anyhoo.

Es parasti darīt visu manu prototipu pret O365 instances. Man ir mana personīgā gadījumu tāpēc, ka man nav jāuztraucas par to ietekmē kāds cits. Kā malā – atcerieties, kad mēs saucam veic ap virtuālās mašīnas mūsu klēpjdatorus ar SŪNĀM-SQL Server, IIS, izlemt, Hyper-V vs. VMWare? Anyhoo...

Bija izveidojies app izmantojot leņķisko šajā vidē, kas, cita starpā, tas:

$http.Get(serverUrl)
.panākumi(funkcija(datu, statuss, galvenes, Config) {

var getLinksResponse = dati;

getLinksResponse.value.forEach(funkcija(theResult) {

// un tā tālāk, un tā putas

Tas strādā tikai naudas sodu divus dažādus SharePoint tiešsaistes vidē. Tomēr, kad mans kolēģis pārnesuši Cloudshare instances, viņš kļūst HTTP 406 kļūda (kas bija pirmā reize, kad es kādreiz ieguva, ka viens, Tātad... yay, man šķiet). Mums bija pētniecības mazliet un pamanīja, ka "Akceptēt" header ir izslēgts. SharePoint tiešsaistē bija pilnīgi apmierināts ar:

Akceptēt: pieteikums/json

Bet cloudshare instances (kas atrodas prem SP, hosted virtuālā servera) gribēja klasisko "odata = runīgs" papildina arī:

Akceptēt: pieteikums/json;oData = runīgs

Noteikt, ka, mēs pievienojām header kā tādu:

var config = {galvenes: {
"Pieņemt": "lietojumprogrammu/json;oData = runīgs "
}
};

$http.Get(serverUrl,Config)
.panākumi(funkcija(datu, statuss, galvenes, Config) {

var getLinksResponse = dati;

getLinksResponse.value.forEach(funkcija(theResult) {

// un tā tālāk, un tā putas

Ka ticis vaļā no 406, bet to arī mainīt atbildes formāts. Tas bija vairāk … runīgs. (haha!) Nebija vajadzīgas vairākas izmaiņas, un šeit ir gala rezultāts:

var config = {galvenes: {
"Pieņemt": "lietojumprogrammu/json;oData = runīgs "
}
};

$http.Get(serverUrl,Config)
.panākumi(funkcija(datu, statuss, galvenes, Config) {

var getLinksResponse = dati;

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

// un tā tālāk, un tā putas

Tas tikai pārvērtās 30 minūte problēma ne tikai mums, tāpēc mēs tiksim cauri sveikā. Cerams, ka kāds atrod šo noderīga.

</beigās>

Praktiski padomi: Iespējot vairākas leņķa SharePoint Web daļas vienā lappusē

Šis emuārs amatu apraksta, kā var būt vairākas Angular.js balstīta SharePoint web daļas (atsauce, izmantojot satura redaktora web daļu) tajā pašā lappusē. Es esmu aicinot satura redaktora web daļu (CEWP) kas atsaucas uz JavaScript, kas būvēti, izmantojot Angular.js sistēmu "leņķiskās Web daļu."

Leņķisko ir bootstrap process ir super viegli un tikai par katru piemēru, jūs atradīsiet par internets iet kaut kas līdzīgs šim:

<HTML ng-app = "myApp">

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

</HTML>

Šī sadala, Tomēr, Ja vēlaties iespējot vairākus CEWP, kas pārstāv vairākas leņķa web daļas vienā lappusē. Leņķisko tiks automātiski bootstrap pret pirmo direktīvu ng app tas atrod – vismaz no leņķa versija 1.3.6. Risinājums ir diezgan vienkāršs – manuāli bootstrap savu kodu, nevis. Iepriekš tagad pārvēršas kaut kas līdzīgs šim:

<organizācija>
<d
IV id =”bootstrapHere” ng kontrolieris =”myController, theController”>
<blah /><blah /><blah />
</DIV>
</organizācija>

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

<skriptu>
Angular.bootstrap(Angular.Element(document.getElementById(“bootstrapHere”)),["myApp"]);
</skriptu>

Būtībā, tā vietā, lai izmantotu ng app elementā darīt jūsu bootstrapping, jūs iepļaukāt uz elementa ID. Pēc tam, izmantot sāknēšanas programma() metodi, ar stūrainām sevi kontrolēt bootstrapping procesu izpildes laikā. Esmu testē šo ar trīs dažādiem leņķa web daļas vienā lappusē, un tas darbojas šarmu.

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin