Kategorija Arhiv: JavaScript

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>

Kotni ne Bootstrap v IE9

Sem bil igranje s Angular.js za zadnji dolgo, medtem ko in za življenje me, Nisem mogel dobiti moje kotni apps za začetek v IE9.  Oni vsi opus lep v IE11, vendar bi IE9 le pokazati, zavite oklepaje in podobne bitov.

Jaz preiskava okrog ter mogli najti kdorkoli pritožujejo nad njegov problem.  To obdelan lep v Chrome, IE11, samo ne IE9.

Sem bil vržen dejstvo, da IE konzoli dal me napak, kot je ta:

SEC7111: HTTPS varnost je ogrožena zaradi res://ieframe.dll/forbidframing.htm

To zmota je razmišljal, da je bilo nekaj problem downloading s kotno ali drugih knjižnic, ki jo potrebujem.  Kot se izkaže, to ni vprašanje.

Ki jih poking okoli internets, Končno sem ugotovil, da sem potreboval, da iskanje za frazo "bootstrap" in da je zdelo, kot je bootstrapping je ni.  Na koncu, moj problem je bil, da sem imel neoviran moje <HTML> oznake z atributom ng-app, kot v:

<HTML ng-app = "MatrixApp">

Dobro, to ni delo za IE9.  Namesto tega, Sem zaviti vsi ostali HTML v na <telo> znotraj div in reference MatrixApp tako.

Problem rešen.

Upajmo, da to nekdo prihrani nekaj žalosti.

</namen>

Vse večjo ozaveščenost / Sprejetja JavaScript okvirov

Moj kolega, Javed Ansari (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), napisal kratek povzetek blog post o okvirih je všeč ali vsaj je bil z uporabo z s SharePointom: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery zdi, da zmagovalec na področju, tako rekoč, za let, ampak drugi so več novih in destilarnah nekako bori, kot kotni. (SPServices, seveda, je bil a življenje dober gospodar za let in bo še naprej tako mislim).

Kaj ljudje uporabljajo? So osredotočene bolj na Microsoftovo orodje (CSOM / JSOM) ali bolj proti kotnega gibljejo, Knockout, Pepel, itd?

Imam vedno predsodke proti teh okvirov Microsofta. Mislim, da stvari MSFT je težje in težje delo z, ki zahtevajo skoraj toliko krivulje učenja kot po starem strežniku dev.

Pokomentirajte tukaj ali pa na Big Apple SharePoint Če želite razpravljati o (Big Apple bodo imeli več verjetnosti dober razpravo).

</namen>

Premagati siten Problem z relativne naslove URL v SharePoint Quick Launch

Sem želel dodati povezavo hitri zagon navigacije drugi dan in mi je povedal SharePoint:

image

Čist tekst prevod to je:

Zagotoviti, da URL je veljaven in se začne z bodisi veljaven znak (Številski znak (#) ali poševnico (/)) ali veljavno podpira protokol (na primer, "http://’, "https://’, "datoteke://’, "ftp://’, "mailto:’, "novice:’).

"Blech in pox!"Sem rekel.

Rešitev za to je, da uporabite JavaScript najti znanih link v nagel splavitev ter preglasitve njegovega vedenja.

V skušnja to, Dodajte novo povezavo na vašo spletno stran test thusly:

image

Sem rabil jQuery. To rešiti, dobili nekaj JavaScript in jQuery na stran using vaš najljubši tehniko in z linijo kodo, kot to:

 

$(dokument).pripravljena( Funkcija () {

    $("a:vsebuje("Preskusni URL zamenjavo")").kliknite(Funkcija () { Opozorilo("kliknite spremenjeno vedenje!"); vrnitev FALSE;});

});

In Bob je vaš stric.

JQuery Selektor najde vsak <a> oznako, ki je "Test URL zamenjavo" v svojem imenu. Če želite najti-tune, ki odvisno od vaše povezave in tako.

Kliknite na(Funkcija() preglasi karkoli SharePoint bi storila, ko uporabnik kliknil. Izdelovanje varen vi "return false" drugače bo naredil svoje stvari in poskusite href stvar preveč, ki je skoraj gotovo ni vaš cilj.

To je bilo storjeno in test v SharePoint online okolju pa mora delati tudi v 2010 in prej preveč.

</namen>

undefinedNaročite se na moj blog.

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

Revež je predpomnjenje v JavaScript

[TL;DR. različica: uporablja piškotke za shranjevanje rezultatov asinhron klici; bili rezultati zadnjih asinhron klici takoj in jih nato potrditi po nalaganja strani.]

Sem delal na SharePointovem mestu intranet za stranko, da značilnosti, med drugim, stilizirane sekundarni navigacija, katerih možnosti menija se upravljajo preko rednih stare seznam po meri.  Ideja je, da stranka dobi nadzor nad "svoje" mesto meni brez vpliva ali vpliva globalne navigacije, dal, ki jih je.

(Obstaja nekaj neverjetno subverzivna o dodajanju CEWP, ki kaže na datoteko HTML, ki naloži nekaj CSS in JS bistveno spreminjajo skoraj vse o spletnega mesta obnašanje... ampak to je za drugo delovno mesto)

Šifra tega zal prepost:

Sore spot tukaj je, da vsakič, ko kdorkoli izmed na spletnih straneh zadetkov, to uporabnik spletnega brskalnika je dosegel, da se elementi s seznama.  Ko dev je popolna in testiranje izkazal stvari stabilno in popolne, Ta klic je nepotrebno več kot 99% od takrat redko spremembe v meniju.  Je tudi čudno UI določajo, kateri je splošen v tem krasnem novem svetu spletnih mest hiper-ajaxy-stran postane in šele nato render meniju.  Je živčnosti in moteča v mojem mnenju.  In živčnosti. Tako, predpomnjenje. 

Sem spremenil logika thusly:

  • Poiščite piškotek v brskalnik, ki vsebuje jedilnik, kot sem nazadnje prebral
    • Če najdemo, Render takoj.  Ne čakati na strani konča nakladanja.  (Vi potreba prepričati se vaš HTML strateško dani tukaj, vendar to ni težko narediti).
  • Čakati na strani konča nakladanja in da je Asinhroni klic otovoriti ki gre gor jedilnik reč na seznamu using počitek ali lists.asmx ali karkoli
  • Primerjati, kaj imam proti piškotek
    • Če se ujema, ustavi se
    • Drugače, z uporabo jQuery, dinamično zapolnijo kup, če <Li>je v a <UL>
  • Uporaba CSS storiti vse oblikovanje
  • Dobiček!

Nekateri od vas bodo rekli, "Hej! ni resnično caching tekoč naprej vsepovsod ker berete meni vseeno vsak čas.”  In imaš prav-ne dajem strežnik kakršnokoli odmor.  Ampak ker klic je asinhron in se zgodi, ko je začetno stran HTML tovora popolnoma postane, "meni" bolj odziven na uporabnika.  Meni postane precej toliko, kot stran črpa.  Če se meni zgodi, da sprememba, uporabnik je izpostavljen živčnosti ponovno pripravi menija, ampak samo en čas.

Obstaja nekaj načinov, da bi ta caching učinkovitejši in pomagati strežniku hkrati:

  • V pravilu, da "piškotek cache" velja za najmanj 24 ur ali neki drugi časovni okvir. Dokler je ni poteklo piškotek, uporabite piškotek je meni posnetek in nikoli zadeti strežnik.

No... to je vse, ki pridejo na misel zdaj :). 

Če ima kdo kakšno pametno ideje tukaj bi radi vedeli zanje.

In nenazadnje-to tehniko se lahko uporabijo za druge stvari.  Ta odjemalski strani je število podatkovnih stvari na različnih straneh, Mnogi od njih spreminjajo razmeroma redko (kot enkrat na teden ali enkrat na mesec).  Če ciljate posebnih področjih funkcionalnosti, lahko daš več odgovarajoč UI s potegom vsebine iz lokalnih piškotek trgovine in vračanje takoj.  Zdi hitreje uporabniku, tudi če ne shranjujete strežnik ciklov.  Vi lahko z odločitvijo o nekaterih pogojih in sprožilce, da izničita ta predpomnilnik lokalnih piškotek shrani strežnik ciklov.  To je vse situacijsko in artsy stvari in res najbolj zabavno :). 

</namen>

undefinedNaročite se na moj blog.

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