Mesečni arhiv: Januarja 2015

HTTP 406 Napaka pri uporabi kotni $http.get proti SharePoint PREOSTALI končne točke

Posodobitev: Marc oglas ndersson poudariti to velik krpa od zavijati: http://blogs.Office.com/2014/08/13/JSON-Light-support-REST-SharePoint-API-Released/. To pojasnjuje veliko :).

Da se lahko najslabši naslov blog post Kdaj! Anyhoo.

Običajno delam vse moje prototipov proti primerek O365. Imam svoj osebni primer, tako da ni treba biti zaskrbljen zaradi vpliva nikomur. Kot prahi – ne pozabite kdaj pravimo izvajajo okoli virtualne stroje na naših prenosnih računalnikov z MAHOM – SQL Server, IIS, odločanju, Hyper-V vs. VMWare? Nekako...

Sem imel razvit app uporabo kotnega v tem okolju, ki pa, med drugim, to:

$http.Get(serverUrl)
.uspeh(Funkcija(podatkov, status, glave, config) {

var getLinksResponse = podatkov;

getLinksResponse.value.forEach(Funkcija(theResult) {

// in tako naprej in tako pena

To je ki dela šele lep v dveh različnih SharePoint online okoljih. Vendar, ko moj kolega je napovedati stopnje Cloudshare, bil je že na HTTP 406 Napaka (ki je prvič sem kdajkoli dobil tisti, tako... Bravo, zdi se mi). Nismo malo raziskav in opazil, da je glava "Accept" odštel. SharePoint online je bila popolnoma zadovoljna z:

Sprejeti: Uporaba/json

Vendar je cloudshare stopnje (ki je SP na prem, gostuje v virtualni strežnik) Hotel classic "odata = verbose" doda tudi:

Sprejeti: Uporaba/json;odata = verbose

Se določi, da, Dodali smo glave kot take:

var config = {glave: {
"Sprejeti": "uporaba/json;odata = verbose "
}
};

$http.Get(serverUrl,config)
.uspeh(Funkcija(podatkov, status, glave, config) {

var getLinksResponse = podatkov;

getLinksResponse.value.forEach(Funkcija(theResult) {

// in tako naprej in tako pena

Ki znebili na 406, vendar je tudi spremenila oblika odziva. Je bilo več... glej verbosly. (haha!) Več sprememb so bile zahtevane in tukaj je končni rezultat:

var config = {glave: {
"Sprejeti": "uporaba/json;odata = verbose "
}
};

$http.Get(serverUrl,config)
.uspeh(Funkcija(podatkov, status, glave, config) {

var getLinksResponse = podatkov;

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

// in tako naprej in tako pena

To samo spremenila v a 30 minuto problem za nas, tako mi lucked. Upajmo, da nekdo najde, to je koristen.

</namen>

Nasveti: Omogoči več kotni SharePoint spletnih gradnikov na isti strani

Ta blog objav opisuje, kako lahko imate več Angular.js podlagi SharePoint spletnih gradnikov (sklicuje preko spletni gradnik urejevalnika vsebine) na isti strani. Kličem spletni gradnik urejevalnika vsebine (CEWP) ki se sklicuje na JavaScript, zgrajena z uporabo okvir Angular.js »Kotni spletnega gradnika. «

Kotni 's bootstrap proces je super enostavno in skoraj vsak primer najdete na internets gre nekako takole:

<HTML ng-app = "MojaAplikacija">

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

</HTML>

Ta razgradi, vendar, Če želite omogočiti več CEWP predstavlja več kotni spletnih gradnikov na isti strani. Kotni bo le samodejno bootstrap proti prve Direktive ng-app to najde – vsaj od različice kotni 1.3.6. Rešitev je zelo preprosta-ročno bootstrap kodo namesto. Zgoraj zdaj spremeni v kaj takega:

<telo>
<d
IV id =”bootstrapHere” NG kontroler =”myController kot theController”>
<bla /><bla /><bla />
</div>
</telo>

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

<skript>
angular.bootstrap(angular.element(document.getElementById(“bootstrapHere”)),[»» MyApp ««]);
</skript>

V bistvu, namesto using ng-app na elementu uganjati vaš bootstrapping, slap ID na ta element. Nato, uporabite v bootstrap() metoda na kotni sam nadzor, je bootstrapping proces pri zagonu. Ive ' preizkušen to s treh različnih kotni spletne gradnike na isti strani in to tovarna a čar.

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin