Archívy kategórie: JavaScript

HTTP 406 Chyba pri použití uhlové $http.get proti SharePoint ZVYŠOK koncové body

Aktualizácia: Marc AD ndersson poukázal na to, tento veľký kus info: http://blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. To vysvetľuje veľa :).

To môže byť niekedy najhoršie názov blogu! Anyhoo.

Zvyčajne robiť, všetky moje prototypovania proti O365 stupňa. Mám moje osobné stupňa tak, že nemusím obávať ovplyvňujúce niekto. Ako stranou-Pamätajte si, kedy nazývame vykonáva okolo virtuálnych strojov na našich laptopoch machom-SQL Server, IIS, rozhodovaní vs Hyper-V. VMWare? Anyhoo...

Mali vyvinuté aplikácie pomocou uhlového v tomto prostredí, ktoré má, okrem iného, this:

$http.Get(AdresaURLServera)
.úspech(Funkcia(údaje, stav, hlavičky, config) {

var getLinksResponse = údaje;

getLinksResponse.value.forEach(Funkcia(theResult) {

// a tak ďalej a tak penou

To bolo v poriadku len v dvoch rôznych SharePoint online prostredie. Avšak, keď môj kolega portovaný na inštanciu Cloudshare, on bol stále HTTP 406 chyba (ktorý bol prvýkrát, čo som kedy dostal ten, Takže... hurá, hádam). Som trochu výskumu a všimol si, že "Prijať" Hlavička bol preč. On-line služby SharePoint bol úplne spokojný s:

Prijať: Aplikácia/json

Ale cloudshare stupňa (čo je SP na prem, hostil na virtuálnom serveri) chcel klasické "Odate = ukecaný" pridané v aj:

Prijať: Aplikácia/json;Odata = podrobného

Opraviť to, pridali sme hlavičky ako také:

var config = {hlavičky: {
"Accept": "aplikácie/json;Odata = verbose "
}
};

$http.Get(AdresaURLServera,config)
.úspech(Funkcia(údaje, stav, hlavičky, config) {

var getLinksResponse = údaje;

getLinksResponse.value.forEach(Funkcia(theResult) {

// a tak ďalej a tak penou

Že sa zbavili 406, ale to tiež zmenil formát odpovede. To bolo viac... podrobného. (haha!) Ďalšie zmeny boli požadované, a tu je konečný výsledok:

var config = {hlavičky: {
"Accept": "aplikácie/json;Odata = verbose "
}
};

$http.Get(AdresaURLServera,config)
.úspech(Funkcia(údaje, stav, hlavičky, config) {

var getLinksResponse = údaje;

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

// a tak ďalej a tak penou

Len sa zmenil 30 minúte problém pre nás, tak my lucked von. Dúfajme, že niekto nájde to užitočné.

</koniec>

Uhlové zlyhá bootstrap v IE9

Bol som hrať s Angular.js za posledných dlho a pre život ma, Nemohol som sa dostať mojej Uhlová aplikácie spustiť v prehľadávači IE9.  Všetci pracovať pokutu v IE11 ale IE9 bych prostě show zložené zátvorky a podobné kúsky.

Hľadal v okolí a nemohol nájsť niekto sťažuje jeho problém.  Fungovalo to pokutu v Chrome, IE11, len nie IE9.

Bola zhodil skutočnosťou, že IE konzole mi dáva chyby, ako to:

SEC7111: HTTPS zabezpečenia je ohrozená res://ieframe.dll/forbidframing.htm

Že chyba ma myslenie tam bol nejaký problém so sťahovaním uhlové alebo iné knižnice, ktoré som potreboval.  Ako to dopadá, to nebol problém.

V postrkování okolo internety, Nakoniec som zistil, že som potreboval hľadať frázu "bootstrap" a aby to vyzeralo ako bootstrapping bolo neúspešné.  V závere, môj problém bol, že bol vyzdobený môj <HTML> značka s atribútom ng-app, rovnako ako v:

<HTML ng-app = "MatrixApp">

Dobre, to nebola práca pre IE9.  Namiesto toho, Zabalil som celý zvyšok HTML <telo> vnútri div a referencie MatrixApp tak.

Problém vyriešený.

Dúfajme, že to šetrí niekto nejaký smútok.

</koniec>

Rastúce povedomie / Prijatie JavaScript rámcov

Môj kolega, Javed Ansari (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), písal krátke zhrnutie blogu o rámcoch on má rád, alebo aspoň bola s pomocou so službou SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery sa zdá k boli víťaza na poli, tak povediac, rokov, ale iní sú viac nových a fotografie zoradiť to bojuje, ako Uhlová. (SPServices, samozrejme, bol záchranca života pre rokov a naďalej bude tak myslím).

Čo sú ľudia pomocou? Sa viac sústreďuje na obrábanie spoločnosti Microsoft (CSOM / JSOM) alebo pohybujú viac smerom k Uhlová, Knockout, Ember, atď?

Mám rastúci sklonmi k týchto rámcov, non-Microsoft. Myslím, že MSFT vecí je ťažšie a ťažšie pre prácu s, vyžadujúce takmer toľko učenia ako staré-štýl na strane servera dev.

Post komentár tu, alebo po dobu Big Apple SharePoint Ak chcete diskutovať o (Big Apple bude mať viac pravdepodobné, dobrá diskusia).

</koniec>

Prekonať nepríjemný problém s relatívnymi adresami URL v SharePoint Quick Launch

Chcel som pridať odkaz na rýchle spustenie navigácie druhý deň a povedal mi, SharePoint:

image

Čisto textové verzie, ktorá je:

Zabezpečiť, že URL je platný a začína buď neplatný znak (číselný znak (#) alebo lomka (/)) alebo platný podporovaný protokol (napríklad, "http://’, "https://’, "súbor://’, "ftp://’, "mailto:’, "novinky:’).

"Blech a kiahne!"Povedal som.

Riešenie pre to je používať JavaScript nájsť známe odkaz v paneli pre rýchle spustenie a prepísať jeho správanie.

Tento test, Pridať nový odkaz na vaše stránky test thusly:

image

Použil som jQuery. To vyriešiť, získať niektoré JavaScriptom a jQuery na stranu pomocou svoje obľúbené techniky a riadok kódu takhle:

 

$(dokument).pripravený( Funkcia () {

    $("a:obsahuje("Test URL náhradné")").kliknite na tlačidlo(Funkcia () { Upozornenie("zmenil kliknite na správanie!"); return FALSE;});

});

A bôb je tvoj strýko.

JQuery volič nájde každý <a> značka, ktorá má "Test URL náhradné" vo svojom mene. Ak chcete nájsť-melódiu, ktorá váš odkaz a také.

Nepokoje(Funkcia() prepíše čo SharePoint by urobil, keď používateľ klikol. Uistite sa, že ste "return false", inak to bude robiť svoje veci a potom skúste href vec príliš, takmer určite čo nie je váš cieľ.

Toto bolo robené a test v prostredí SharePoint online ale mal by fungovať aj v 2010 a skôr príliš.

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin

Chudák je cache v JavaScriptu

[TL;DR verziu: používanie cookies k ukladaniu výsledky asynchrónne volania; vykreslenie Výsledky posledných asynchrónne volania okamžite a potom overiť po načítaní stránky.]

Bol som pracoval na intranetovej lokalite SharePoint pre klienta, že funkcie, okrem iného, štylizované druhej navigácii ktorého menu voľby sú riadené prostredníctvom pravidelnej starými vlastného zoznamu.  Myšlienka je, že klient dostane kontrolovať "ich" stránky menu bez ovplyvnenia alebo byť zasiahnuté globálnej navigácie vyháňaní to.

(tam je niečo neuveriteľne podvratné pridávanie CEWP, ktorý odkazuje na súbor HTML, ktorý načíta niektoré CSS a JS zásadne zmeniť takmer všetko o webe správanie... ale to je iný post)

Kód pre tento veľmi jednoduchý:

Boľavé miesto tu je, že zakaždým, keď niekto udrie jedným zo stránky, používateľa webového prehliadača je osloviť načítať položky zo zoznamu.  Po dokončení sa dev a testovanie ukázalo veci byť stabilnejší a kompletné, Táto výzva je zbytočné viac ako 99% doby, kedy v ponuke zriedka to zmení.  Má tiež podivné UI ovplyvniť, čo je bežné v tomto odvážnom novom svete hyper-AJAX webových stránok – stránky omietky a až potom v ponuke vykresliť.  Je nervózna a rušivé podľa môjho názoru.  A nervózny. Takže, ukladanie do vyrovnávacej pamäte. 

Som upravil logika thusly:

  • Pohľad na cookie v prehliadači, ktorý obsahuje ponuku ako som naposledy čítal
    • Ak sa našiel, robí to okamžite.  Nemusíte čakať na dokončenie načítania stránky.  (Budete musieť uistite sa, že HTML je strategicky umiestnené tu., ale to nie je ťažké urobiť).
  • Čakať na stránku až do konca nakládky a asynchrónne volanie naložiť menu položky zoznamu pomocou odpočinku alebo lists.asmx alebo čokoľvek, aby
  • Porovnajte čo mám proti cookie
    • Ak sa to zhoduje, zastaviť
    • Inak, pomocou jQuery, dynamicky naplniť veľa Ak <li>je v <ul>
  • Použitie CSS robiť všetko formátovanie
  • Zisk!

Niektoré z vás chcel povedať, "Hej! Neexistuje žiadny skutočný caching deje pretože čítate menu rovnako každý jednotlivý čas.”  A máš pravdu-nejsem dáva server akýkoľvek druh prestávku.  Ale pretože hovor je asynchrónna a stane po stránke počiatočné zaťaženie HTML plne omietky, "Pripadá mi to" lepšie reagovať na užívateľa.  V ponuke omietky docela ako stránku čerpá.  Ak v ponuke dôjde k zmene, používateľ sa podrobí nervózny znovu čerpať z menu, ale iba tento raz.

Existuje niekoľko spôsobov na zefektívnenie tejto cache a pomoct server v rovnakom čase:

  • Zaviesť pravidlo, že "cookie cache" je platný pre minimálne 24 hodín, alebo nejaký iný Časový. Pokiaľ neexistuje žiadna cookie vypršala, použitie cookie ponuky snímka a nikdy hit server.

No... to je všetko, čo príde na myseľ hneď :). 

Ak má niekto nejaké chytré nápady tu by chcel poznať.

A napokon – Táto technika môže byť použitá pre iné veci.  Tento klient strana má mnoho vecí, data-riadený na rôznych stránkach, Mnohé z nich mení pomerne zriedka (ako raz týždenne alebo raz za mesiac).  Ak cielite špecifické oblasti funkčnosti, si môžete dať citlivejšie UI ťahom obsah z miestnej cookie obchodu a vykresľovanie okamžite.  Pripadá mi to rýchlejšie pre užívateľa aj ak nie ukladáte server bez cyklov.  Ste môžete uložiť na server cykly pri rozhodovaní o niektorých podmienkach a spúšťa zruší tento miestnej cookie cache.  To je všetky situačná a diletantský veci a naozaj najviac zábavy :). 

</koniec>

undefinedVyberajte môj blog.

Nasledujte ma na stebėtų na http://www.twitter.com/pagalvin