Category Archives: JavaScript

HTTP 406 Hiba mikor használ szögletes $http.get ellen SharePoint többi végpontok

Frissítés: Marc AD ndersson rámutatott, ezt a nagy darab info: http://blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Hogy sok mindent megmagyaráz :).

Lehet, hogy a legrosszabb cím egy blog felad valaha! Anyhoo.

Általában csinálni, minden az én prototípus ellen O365 példány. Nekem van az én-m személyes például úgy, hogy ne kelljen érintő valaki aggódik. Mint egy félre-emlékszik mikor hívjuk végzett, ezen a környéken: virtuális gépek a mi laptopok-és MOSS-SQL Server, IIS, döntés a Hyper-V vs. VMWare? Anyhoo...

Én alakult egy app segítségével szög ebben a környezetben amit csinál, egyebek, Ez:

$http.Get(serverUrl)
.siker(függvény(adatok, állapot, fejlécek, config) {

var getLinksResponse = adatok;

getLinksResponse.value.forEach(függvény(importőrrel) {

// és így tovább és így hab.

Ez volt csak finom környezetben dolgozó két különböző SharePoint online. Azonban, Mikor a kollégám átvittem ez egy Cloudshare-példány, ő volt szerzés egy HTTP 406 hiba (melyik volt az első alkalom, amit valaha kaptam, hogy az egyik, így... yay, azt hiszem). Csináltam egy kis kutatást, és észrevettem, hogy az "Elfogadom" fej le. SharePoint online tökéletesen elégedett volt:

Fogadja el: Application/json

De a cloudshare példány (amely az SP prem, a virtuális kiszolgálón tárolt) szerettem volna a klasszikus "odata = verbose" hozzáadott-ban, valamint:

Fogadja el: Application/json;OData = verbose

Rögzíteni, hogy, adtunk a fejlécben ilyen:

var config = {fejlécek: {
'Accept': "application/json;OData = verbose "
}
};

$http.Get(serverUrl,config)
.siker(függvény(adatok, állapot, fejlécek, config) {

var getLinksResponse = adatok;

getLinksResponse.value.forEach(függvény(importőrrel) {

// és így tovább és így hab.

Hogy megszabadultak az 406, de ez is megváltozott a formátum a válasz. Ez több volt... részletes. (haha!) További módosítások voltak szükségesek, és itt van a végleges eredmény:

var config = {fejlécek: {
'Accept': "application/json;OData = verbose "
}
};

$http.Get(serverUrl,config)
.siker(függvény(adatok, állapot, fejlécek, config) {

var getLinksResponse = adatok;

getLinksResponse.d.Results.forEach(függvény(importőrrel) {

// és így tovább és így hab.

Ez csak esztergált-ba egy 30 perc probléma a számunkra, Tehát mi lucked arra. Remélhetőleg valaki talál ez hasznos.

</vége>

Szögletes megbukik-hoz Bootstrap az IE9

Én már játszott ezen a környéken: a Angular.js az utolsó hosszú közben, és az élet nekem, Én nem tudott kap az én-m szögletes apps-hoz dob-ban IE9.  Minden jól működik a IE11, de az IE9 akar csak mutat a kapcsos zárójelek és hasonló bit.

Én keresett körül, és nem talált senkit arról panaszkodnak, hogy a probléma.  Ez munkás finom-ban Króm, IE11, csak nem az IE9.

Volt dobták ki az a tény, hogy az IE-konzol volt giving én hiba mint ez:

SEC7111: HTTPS-biztonság nem veszélyezteti a res://Ieframe.dll/forbidframing.htm

Ezt a hibát én gondoltam, hogy néhány probléma letöltő a szögletes vagy más könyvtárak, hogy szükség van.  Mint kiderült, nem ez volt a kérdés.

Dugta körül a internets, Végül kiderült, hogy a mondat, én szükséges-hoz keres "bootstrap", és hogy úgy tűnt, mintha a bootstrapping volt ennek hiányában.  A végén, az én problémám volt, hogy én volt díszítve az én-m <HTML> a ng-app attribútummal rendelkező tag, mint a:

<HTML ng-app = "MatrixApp">

Jól, Ez nem működik, az IE9.  Ehelyett, Én csomagolva az összes többi a HTML-ben a <szerv> belsejében egy div és referenciák MatrixApp így.

Megoldott probléma.

Remélhetőleg ez takarít meg valakit valamilyen bánat.

</vége>

Egyre inkább tudatosodik / Elfogadásának JavaScript keretrendszerek

Az én-m kolléga, Kadarkuti József (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), írt egy rövid összefoglaló blogbejegyzést, keretekre, ő szeret, vagy legalább már használja a SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery úgy tűnik, a győztes a pályán, hogy úgy mondjam, már évek óta, de a többiek is több új és állóképek egyfajta harcoló, mint a szög. (SPServices, természetesen, volt egy élet megmentő éve, és továbbra is úgy gondolom).

Milyen emberek használ? Ők koncentrál inkább a Microsoft szerszám (CSOM / JSOM) vagy inkább szög felé, Kieséses, Izzó fadarab, stb?

Nekem van egy egyre növekvő előítéletek felé ezeket a Microsoft keretek. Azt hiszem, az MSFT dolgokat nehezebb és nehezebb-hoz dolgozik-val, majdnem annyi tanulási görbe, mint a régi stílusú kiszolgálóoldali dev igénylő.

A hozzászólásod itt vagy a feletti Big Apple SharePoint Ha azt szeretné, hogy megvitassák (Big Apple van nagyobb valószínűsége, hogy egy jó beszélgetés).

</vége>

Leküzdeni a bosszantó probléma a relatív URL-címeket a SharePoint gyors dob

Azt akartam, hogy adjunk hozzá egy linket a Gyorsindítás navigációs a minap, és SharePoint azt mondta nekem:

image

Tiszta szöveges változat, hogy az:

Biztosítja, hogy az URL-cím érvényes, és kezdődik vagy érvénytelen karakter (kettőskereszt (#) vagy perjel (/)) vagy egy érvényes támogatott protokoll (például, "http://’, "https://’, "fájl://’, "ftp://’, "mailto:’, "Hírek:’).

"Blech és kecskehimlő!"Azt mondta.

Egy workaround-hoz ez, hogy JavaScript segítségével talál egy ismert láncszem-ban gyors dob és a viselkedés felülbírálásához.

Ez a teszt, új hivatkozás hozzáadása a vizsgálati helyszín imigyen:

image

Én használt a jQuery. Kell megoldani, hogy, egy kis JavaScript és jQuery alakzatot a rajzlapra, a kedvenc technikával, és egy vonal-ból kód, mint ez:

 

$(dokumentum).kész( függvény () {

    $("egy:tartalmaz("Vizsgálati csere URL-címe")").kattintson a(függvény () { Figyelmeztetés("megváltozott kattintson a viselkedés!"); vissza hamis;});

});

És Bob a nagybátyja.

A jQuery-választó találja minden <egy> címke, amely neve "Teszt URL csere". Szabad akar-hoz talál-dallamot, hogy attól függően, hogy a link, és az ilyen.

A ha(függvény() felülbírálja, bármilyen SharePoint lett volna, amikor a felhasználó kattintott. Győződjön meg arról, hogy "return false" vagy máshol ez a dolgokat, és próbálja meg a href dolog túl, és ez szinte minden bizonnyal nem a cél.

Ez történt, és a SharePoint online környezetben teszt de kell jól működik 2010 és korábban is.

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin

Szegény ember meg gyorsítótár-JavaScript

[TL;DR változat: aszinkron hívások eredményének tárolására cookie-k segítségével; Render korábbi aszinkron hívás eredményét azonnal, és akkor ellenőrzi őket után az oldal teher.]

Már dolgozik a SharePoint intranetes hely egy ügyfél amit jellegét meghatározza, egyebek, stilizált másodlagos navigációs, amelynek menüpontok kezelt keresztül rendszeres régi egyéni listát.  Az ötlet az, hogy az ügyfél kap, hogy "saját" webhely menü nem érintő, vagy befolyásolják a globális navigációs tesz ki.

(van valami hihetetlenül felforgató, egy CEWP, amit váltó-hoz egy HTML-fájlt, amely betölti néhány CSS és JS, hogy alapjaiban változtatja meg egy webhely viselkedése... szinte mindent, de ez egy másik post hozzáadásával kapcsolatban)

A kód részére ez szép egyszerű:

  • Várni a lap betöltése befejezni, és csinál egy hív-hoz teher megjelöl menüpontok segítségével a többi vagy lists.asmx, vagy bármi listájából aszinkron
  • Segítségével jQuery, dinamikusan feltöltése egy csomó, ha <Li>belül a szülő meg <UL> (Lásd Christian Pinder itt ez tecnnique egyszerű magyarázata)
  • Tenni, a formázás CSS segítségével
  • Profit!

A herpesz spot itt az, hogy minden alkalommal, amikor valaki eléri az egyik a telek oldalak, hogy a felhasználó webböngésző elérése, kap elemek a listában.  Egyszer befejeződött a dev és vizsgálat bizonyította a dolgokat, hogy stabil, és teljes, ezt a felhívást a felesleges több mint 99% az idő, mivel az étlap csak ritkán változik.  Ez is birtokol egy furcsa UI hatással, ami gyakran a szép új világban hyper ajaxy webhelyek – az oldal, és csak akkor nem jeleníti meg a menüben.  Az ideges és zavaró az én véleményem.  És ideges. Így, cache-t. 

Módosítottam a logika imigyen:

  • Keres egy süti a böngésző, hogy utoljára olvasni, ez a menü tartalmazza
    • Ha talált, hogy azonnal tegyék.  Ne várjon az oldal betöltésekor.  (Sírnod kell győződj meg a HTML stratégiailag elhelyezett itt, de ez nem nehéz megtenni).
  • Várni a lap betöltése befejezni, és csinál egy hív-hoz teher megjelöl menüpontok segítségével a többi vagy lists.asmx, vagy bármi listájából aszinkron
  • Hasonlítsa össze, mit kapott, szemben a cookie-k
    • Ha ez megegyezik, állj
    • Egyébként, segítségével jQuery, dinamikusan feltöltése egy csomó, ha <Li>meg az a <UL>
  • Tenni, a formázás CSS segítségével
  • Profit!

Néhányan azt fogják mondani, "Hé! van nem igazi cache folyik itt óta olvasod a menü egyébként minden egyes alkalommal.”  És igazad van,-nem adom, a szerver bármilyen típusú szünet.  De azért, mert a hívás aszinkron és történik után az oldal kezdeti HTML tartalom teljesen viszonoz, "érzés" jobban reagál, hogy a felhasználó.  A menü szép teszi, mint az oldal felhívja.  Ha a menüben az történik, hogy a változás, a felhasználó van kitéve egy ideges újra felhívni a menü, de csak ekkor, egy alkalommal.

Vannak néhány ways-hoz ez gyorsítótárazás hatékonyabbá tenni és segíteni a kiszolgáló egy időben:

  • Betesz egy szabály, hogy a "cookie-cache" érvényes minimum 24 órán vagy néhány más időkeret. Mindaddig, amíg van nem lejárt süti, használja a cookie-k menü pillanatképet, és soha nem hit a szerver.

Hát... ennyi jutott eszembe most :). 

Ha akárki birtokol akármi okos ötleteket itt szeretném tudni, hogy őket.

És végül – ezt a technikát lehet használni más dolgok.  Ez az ügyfél oldal számos adat-vezérelt dolog a különböző oldalak, Sokan közülük viszonylag ritkán változó (mint hetente vagy havonta egyszer).  Ha adott területen a funkcionalitás cél, egy rugalmasabb felhasználói Felületet ad húzza a tartalmat a helyi cookie boltból, visszaadás azonnal.  Érzés gyorsabb, hogy a felhasználó még akkor is, ha nem menti a kiszolgálón bármely ciklusok.  Ön lehet mentse a server ciklusok azzal a bizonyos feltételek és kiváltó, hogy érvényteleníti a helyi cookie-cache.  Ez minden szituációs és artsy cucc, és tényleg a legnagyobb élmény :). 

</vége>

undefinedSubscribe to my blog.

Kövesse nekem Twitter http://www.twitter.com/pagalvin