Kategooria Arhiiv: JavaScript

HTTP 406 Viga kasutamisel nurgeliste $http.get vastu SharePointi ülejäänud lõpp-punktid

Värskendus: Marc AD ndersson märkis see suur tükk info: http://blogs.Office.com/2014/08/13/JSON-Light-Support-REST-SharePoint-API-released/. Mis seletab palju :).

See võib olla halvim pealkiri blogi postitus kunagi! Anyhoo.

Ma tavaliselt kõik minu prototüüpimiseks vastu O365 eksemplar. Mul on minu isiklik eksemplar, nii et ma ei peaks olema mures mõjutavate keegi teine. Nagu kõrvale-mäletad kui me nimetame ümber virtuaalarvutid läbi meie sülearvutid MOSS-SQL Server, IIS, Otsustades Hyper-V vs. VMWare? Anyhoo...

Mul oli arenenud app kasutades nurga selles keskkonnas, mis ei, muu hulgas, See:

$http.Get(serverUrl)
.edu(funktsioon(andmed, olek, päised, config) {

var getLinksResponse = andmed;

getLinksResponse.value.forEach(funktsioon(theResult) {

// ja nii edasi ja nii vaht

See töötas suurepäraselt kahest erinevaid SharePoint online keskkondades. Aga, Kuna kolleeg portinud see Cloudshare eksemplar, ta oli saada ka HTTP 406 tõrge (mis oli esimene kord, ma kunagi sain et üks, nii... Jee, Arvan). Me tegime natuke uurida ja märganud, "Nõustu" päise oli välja. SharePoint online oli täiesti rahul:

Aktsepteeri: taotlus/json

Kuid cloudshare eksemplari (mis on SP prem, virtual server võõrustas) tahtis klassikaline "odata = verbose" lisada ka:

Aktsepteeri: taotlus/json;odata = verbose

Kinnitada, et, lisasime päise sellisena:

var config = {päised: {
"Kinnita": "rakendus/json;odata = verbose'
}
};

$http.Get(serverUrl,config)
.edu(funktsioon(andmed, olek, päised, config) {

var getLinksResponse = andmed;

getLinksResponse.value.forEach(funktsioon(theResult) {

// ja nii edasi ja nii vaht

Mis lahti on 406, kuid seda muuta ka format vastamise. See oli rohkem... verbose. (haha!) Rohkem muudatusi oli vaja ja siin on lõpptulemus:

var config = {päised: {
"Kinnita": "rakendus/json;odata = verbose'
}
};

$http.Get(serverUrl,config)
.edu(funktsioon(andmed, olek, päised, config) {

var getLinksResponse = andmed;

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

// ja nii edasi ja nii vaht

See ainult muutus on 30 hetke probleemi meile, nii me lucked. Loodetavasti keegi leiab see kasulik.

</lõpp>

Nurk ei IE9 Bootstrap

Ma olen mänginud Angular.js viimase pikka aega samas ja minu elu, Ma ei saanud minu nurk apps käivitada IE9.  Nad kõik töötavad trahvi IE11 kuid IE9 näitaks just looksulge ja sarnaste bitti.

Ma otsinud umbes ja ei suutnud leida keegi kurtnud oma probleemi.  See töötas trahvi, kroom, IE11, lihtsalt ei ole IE9.

Ma visati asjaolu, et IE konsool annab mulle viga niimoodi:

SEC7111: HTTPS turvalisus satub res://ieframe.dll/forbidframing.htm

Viga oli mulle mõtlemist ei olnud mingi probleem allalaadimine selle nurga või muu teeke, mida ma vajasin.  Nagu selgub, ei olnud see probleem.

Poolt poking ümber selle internets, Ma lõpuks selgus, et mul on vaja otsida fraasi oli "bootstrap" ja et see tundus et eellaadimisel oli puudumisel.  Aasta lõpus, minu probleem oli mul oli kaunistatud minu <HTML> ng-app atribuut silt, nagu ka:

<HTML ng-app = "MatrixApp">

Hästi, See ei tööta IE9.  Selle asemel, I pakendati HTML ja ülejäänud on <keha> div ja viited MatrixApp nii sees.

Probleem lahendatud.

Loodetavasti see säästab keegi mõned leina.

</lõpp>

Kasvav teadlikkus / JavaScript raamistikke vastuvõtmine

Minu kolleeg, Javed Ansari (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), kirjutasin lühikese kokkuvõtte ajaveebipostituse raamistike ta meeldib või vähemalt on kasutanud koos SharePointiga: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery näib olevat olnud victor põllul, niiöelda, juba aastaid, aga teised on rohkem uusi ja destillaatorid omamoodi võitleb ta, nagu nurga. (SPServices, Muidugi, on elu saver aasta ja on jätkuvalt minu arust).

Mida inimesed kasutavad? Nad keskenduvad rohkem Microsofti instrumentaarium (CSOM / JSOM) või liigub edasi suunas nurga, Knockout, Hõõguvas söe, jne?

Mul on kasvav diagonaal suunas need Microsofti raamistikud. Ma arvan, et MSFT kraami on raskem ja raskem töötada, peaaegu sama palju kui traditsioonilist serveripoolne dev õppimiskõver nõudes.

Kommenteerida siin või üle kell Big Apple SharePointi Kui soovite, et arutada (Big Apple on rohkem tõenäoline hea arutelu).

</lõpp>

Ületada tüütu probleem suhteline URL SharePointi Quick Launch

Tahtsin lisada lingi kiirkäivitusnuppudena navigeerimine teisel päeval ja SharePointi ütles mulle:

image

Puhta teksti versioon sellest on:

Tagada, et URL on kehtiv ja hakkab kas sobiv märk (numbrimärk (#) või kaldkriips (/)) või sobivat toetatud protokolli (näiteks, "http://’, ' https://’, "fail://’, "ftp://’, "mailto:’, "Uudised:’).

"Blech ja pox!"Ma ütlesin.

Lahendust sellele on JavaScript abil leida tuntud linki quick launch ja alistada käitumisviisi.

Katsetada seda, Lisa uus link saidile katse thusly:

image

Ma kasutasin jQuery. Lahendada see, saaksin JavaScript ja jQuery kasutades oma lemmik tehnika lehele ja koodi niimoodi joonega:

 

$(dokumendi).valmis( funktsioon () {

    $("a:sisaldab(Katse URL asendamine)").Klõpsake nuppu(funktsioon () { märguanne("muutunud kliki käitumist!"); edasi-tagasi väär;});

});

Ja oma onu Bobi.

JQuery valija leiab iga <a> sildi, millel on "Test URL asendamine" oma nime. Te võite leida-tune mis sõltuvalt teie link ja selline.

Selle .click(funktsioon() alistab iganes SharePointi oleks teinud kasutaja klõpsamisel. Veenduge, et olete "return false" või siis see ei oma asjad ja seejärel proovige href asi liiga, mis on peaaegu kindlasti mitte teie eesmärk.

Seda tehti ja test SharePoint online keskkonnas, kuid peaks töötama hästi 2010 ja enne seda liiga.

</lõpp>

undefinedTelli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin

Vaene mees on Caching JavaScript

[TL;DR versioon: kasutame küpsiseid, et salvestada tulemused async kõned; muuta tulemused viimase async kõned kohe ja seejärel Kinnita neid pärast lehe laadimist.]

Olen töötanud SharePointi intranet saidil kliendile, et funktsioonid, muu hulgas, stiliseeritud teisese navigation kelle menüüsuvandite hallatakse kaudu regulaarselt vana kohandatud loendi.  Mõte on selles, et klient saab kontrollida "oma" saidi menüü mõjutamata või mõjutavad globaalset navigatsioonisatelliitide poolt välja pandud.

(seal on midagi uskumatult õõnestava lisamine CEWP, mis viitab HTML-fail, mis laadib mõned CSS ja JS oluliselt muuta peaaegu kõike saidi käitumine... kuid see on teisele ametikohale)

See päris lihtne kood:

Valus kohapeal siin on see, et iga kord, kui keegi lööb selle saidi leheküljed, See kasutaja veebilehitseja on jõudmas saada üksuste loendist.  Kui dev on lõpetatud ja testimine on osutunud asjad olema stabiilne ja täielik, selle kutse ei ole vajalik enam kui 99% ajast alates menüü harva muutub.  On ka imelik UI mõjutada, mis on levinud see vapper uus maailm hüper-ajaxy veebisaitide-lehe renderdamist ja alles seejärel menüü Muuda.  On närviline ja häiriv, minu arvates.  Ja närviline. Nii, vahemällu. 

Ma muutmine loogika thusly:

  • Otsige küpsise brauseri, mis sisaldab menüüd kui viimati lugesin
    • Kui leiti, Muuda kohe.  Ärge oodake lõpuni laadimise lehele.  (Sa pead veenduge, et teie HTML strateegiliselt paigutatud siin, kuid see ei ole raske teha).
  • Oodake, kuni lehe lõpuni peale ja tee async helistada korralikuks menüü üksuste loendi, kasutades ülejäänud või lists.asmx või mis iganes
  • Võrdle, mida sain vastu küpsis
    • Kui see sobib, Stopp
    • Muidu, kasutades jQuery, dünaamiliselt asustada hunnik kui <Li>'s in a <UL>
  • Kasutage kogu vormingu CSS
  • Kasum!

Mõned teist lähevad öelda, "kuule! ei mingit tõelist vahemällu siin toimub kuna sa loed menüü niikuinii iga kord.”  Ja sul on õigus-ma olen andes server murda tahes.  Kuid kuna kõne on asünkroonne ja juhtub pärast esialgse ettepaneku lehe HTML lasti täielikult muudab, "tundub" kiiremini reageerima kasutaja.  Menüü muudab päris palju kui lehe viiki.  Kui menüü muutus, Kasutaja läbib närviline uuesti teha menüü, kuid ainult üks kord.

Seal on mõned viisid, et muuta see vahemälu tõhusamaks ning aidata server samal ajal:

  • Pane vähemalt kehtiva "küpsiste vahemälu" reeglit 24 tunni või mõni muu ajakava. Kui ei ole aegunud küpsis, Kasutage seda küpsist menüüd pildistamise ja kunagi tabanud server.

Noh... see on kõik, mis kohe pähe tulevad :). 

Kui kellelgi on kõik targad ideed siin oleks tore teada nende.

Ja lõpuks – seda tehnikat kasutada muid asju.  Selle kliendi leheküljel on mitmeid asju andmepõhiseid erinevatel lehekülgedel, Paljud neist muutuvad suhteliselt harva (näiteks kord nädalas või kord kuus).  Kui sihite teatud valdkondades funktsioone, annad paindlikumaks UI tõmmates sisu kohalikku küpsis salvestada ja muuta kohe.  Ta tunneb kiiremini kasutajale, isegi kui sa oled kokkuhoid, server kõik tsüklit.  Te Saate salvestada serveri tsüklit otsustades mõned tingimused ja vallandab tunnistab kehtetuks kohalik küpsiste vahemälu.  Ongi kõik olukorrast ja esteetilist asjad ja tõesti kõige toredam :). 

</lõpp>

undefinedTelli minu blogi.

Järgi mind vidistama kell http://www.twitter.com/pagalvin