Kategorija Archives: JavaScript

HTTP 406 Klaida, kai naudojant kampinis $http.get nuo SharePoint poilsio hipotezes

Atnaujinimas: Marc AD ndersson nurodė šį puikus gabalas, info: http://blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Tai paaiškina daug :).

Tai gali būti blogiausiu žinutę pavadinimas kada nors! Anyhoo.

Paprastai aš visus mano prototipų prieš O365 egzempliorius. Aš turiu mano asmens instancijos, kad man nereikės nerimauti dėl įtakos kas nors. Kaip panaikinti – prisiminti Kada mes vadiname atliktas aplink virtualios mašinos mūsų nešiojamieji kompiuteriai su MOSS – SQL serverio, IIS, SPRENDŽIAMOSIOS Hyper-V vs. VMWare? Anyhoo...

Man buvo sukurtas naudojant judesio kiekio šioje aplinkoje, kuri nėra app, be kita ko, tai:

$http.get(serverUrl)
.sėkmės(funkcija(duomenų, statusas, antraštės, Config) {

var getLinksResponse = duomenys;

getLinksResponse.value.forEach(funkcija(theResult) {

// ir taip puta

Tai dirbo tik baudą dviejų skirtingų SharePoint online aplinkoje. Tačiau, Kada mano kolega jis perkeltas į Cloudshare instancijos, jis buvo gauti, HTTP 406 klaida (kuris buvo pirmą kartą aš kada nors gavo, kad vienas, Taigi... yay, tikriausiai). Mes padarėme šiek tiek mokslinių tyrimų ir pastebėjau, kad "Priimti" antraštė buvo ne. SharePoint internete buvo visiškai laimingas su:

Priimti: paraiškos/json

Bet cloudshare atveju (kuri yra SP prem, vyko virtualiame serveryje) norėjo klasikinis "odata = kalbantys" įrašyti, taip pat:

Priimti: paraiškos/json;oData = kalbantys

Nustatyti, kad, Mes pridėjome antraštėje tokiais:

var config = {antraštės: {
"Priimti": "paraiškos/json;oData = kalbantys "
}
};

$http.get(serverUrl,Config)
.sėkmės(funkcija(duomenų, statusas, antraštės, Config) {

var getLinksResponse = duomenys;

getLinksResponse.value.forEach(funkcija(theResult) {

// ir taip puta

Kad atsikratyti, kad 406, Tačiau ji taip pat pakeitė formatą, atsakymas. Tai buvo daugiau... kalbantys. (Haha!) Daugiau pakeitimų buvo reikalaujama ir Štai galutinis rezultatas:

var config = {antraštės: {
"Priimti": "paraiškos/json;oData = kalbantys "
}
};

$http.get(serverUrl,Config)
.sėkmės(funkcija(duomenų, statusas, antraštės, Config) {

var getLinksResponse = duomenys;

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

// ir taip puta

Tai tik pasuko į a 30 minutę problema mums, Taigi mes lucked. Tikimės, kad kas nors mano, kad tai naudinga.

</pabaigos>

Kampinis nesugeba įkrovos į IE9

Aš žaisti su Angular.js per pastaruosius ilgai kartu ir už gyvenimą man, I couldn't get mano kampinis apps, pradėti IE9.  Visi jie puikiausiai veikia ir IE11 bet IE9 tiesiog rodo riestiniai ir panašių bitai.

Aš Ieškota aplink ir negalėjo rasti bet skųstis apie savo problemą.  Jis dirbo gerai, "Chrome", IE11, tik ne IE9.

Aš buvo išmesti dėl to, kad IE konsolės buvo duoti man klaidos kaip šis:

SEC7111: HTTPS saugumas yra pavojuje, iš res://ieframe.dll/forbidframing.htm

Ši klaida buvo man galvoti, ten buvo kai kurių problemų atsisiunčiant į kampinis arba kitų bibliotekomis, kurios man reikia.  Kaip paaiškėjo, tai nebuvo problema.

Iš išnyra aplink internetas, Aš pagaliau sužinojau, kad man reikia ieškoti frazė buvo "įkrovos" ir kad jis atrodė kaip Bootstrap buvo nevykdo.  Galiausiai, mano problema buvo, kad aš turėjo papuošti savo <HTML> turinčioje atributą ng-app, kaip ir:

<HTML ng-app = "MatrixApp">

Na, kad ne darbo IE9.  Vietoj, Aš apvyniotas ant groteliu, HTML, ir <įstaiga> viduje div ir nuorodos MatrixApp tokiu būdu.

Problema išspręsta.

Tikimės, kad tai taupo kas nors kai pucia.

</pabaigos>

Vis geriau / Priėmimą iš JavaScript sistemas

Mano kolega, Javed Ansari (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), parašė trumpą santrauką dienoraštyje sistemas jis mėgsta ar bent naudoja su su SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery, atrodo, buvo Viktoras į lauką, taip sakant, jau metus, Tačiau kiti yra daugiau naujos ir distiliatoriai rūšiuoti kovoja su jį, pavyzdžiui, judesio kiekio. (SPServices, žinoma, buvo gyvenimo užsklandą metų ir toliau bus taip manau).

Ką žmonės naudoja? Jie skirti daugiau Microsoft įrankius (CSOM / JSOM) ar vežti daugiau link judesio kiekio, Nokautas, Aurelija, ir tt?

Aš vis poslinkis link šių ne Microsoft sistemos. Manau, kad MSFT medžiaga yra sunkiau ir sunkiau dirbti su, reikia beveik tiek mokymosi kreivė kaip seno tipo serverio dev.

Parašyk komentarą čia arba per ne Big Apple SharePoint Jei norite aptarti (Didelis obuolys turi daugiau tikimybės gera diskusija).

</pabaigos>

Įveikti erzina problema su santykinis URL SharePoint greitai pradėti

Aš norėjau pridėti saitą prie greitosios paleisties navigacijos kitą dieną ir SharePoint man:

image

Grynojo teksto versija, kad yra:

Užtikrinti, kad URL yra galiojantis ir prasideda arba svarbių simbolių (skaičiaus ženklo (#) arba pasviruoju brūkšniu (/)) arba yra galiojanti veikė protokolo (pvz., "http://’, "https://’, "failas://’, "ftp://’, "mailto:’, "Naujienos:’).

"Blech ir raupų!"Man sakė:.

Tai problemos turi naudoti JavaScript rasti žinomų nuorodą į greitąją paleistį ir nepaisyti savo.

Norėdami tai patikrinti, Pridėti naują nuorodą į svetainę bandymo thusly:

image

Aš jQuery. Ją išspręsti, gauti kai kurių JavaScript ir jQuery ant puslapio, naudodami savo mėgstamiausiu metodu ir su kodo panašaus eilutę:

 

$(dokumento).paruošta( funkcija () {

    $("a:yra("Bandymo URL pakeitimo")").spustelėkite(funkcija () { perspėjimas("pakeistas paspaudimų elgseną!"); grįžti klaidinga;});

});

Ir Bob's jūsų dėdė.

JQuery selektorius nustato, kas <a> žyma, kad yra "Bandymas URL pakeitimas" savo vardu. Jūs galite rasti-melodija, priklausomai nuo jūsų nuorodą ir tokių.

Ir spauskite(funkcija() pakeičia nepriklausomai nuo SharePoint būtų padaryta tada, kai vartotojas spustelėjo. Įsitikinkite, kad jūs "return false" ar dar ji bus padaryti savo stuff ir tada bandyti href dalykas per, tai tikriausiai ne jūsų tikslas.

Tai buvo padaryta ir bandymo SharePoint online aplinkoje, bet turėtų dirbti gerai 2010 ir anksčiau per.

</pabaigos>

undefinedPrenumeruoti savo dienoraštį.

Sekite mane Twitter ne http://www.twitter.com/pagalvin

Vargšas spartinimo JavaScript

[TL;DR versija: naudoja slapukus saugoti async skambinti rezultatai; padaryti pastaruosius async skambinti rezultatai iš karto ir tada patvirtinti jas po puslapio apkrova.]

Aš dirbu SharePoint svetainę klientas kad funkcijos, be kita ko, stilizuoti antrinės navigacijos kurių meniu parinktys yra valdomi per reguliariai senas pasirinktinį sąrašą.  Idėja, kad klientas gauna valdyti "savo" svetainės meniu be paveikti ar paveiks jo irtis pasaulinės navigacijos.

(kažkas neįtikėtinai ardomąją apie naują CEWP, kuris atkreipia dėmesį į HTML failą, krovinys šiek tiek CSS ir JS iš esmės pakeisti beveik viską apie svetainės veikimą... bet tai kitai įstaigai)

Šis gana paprastas kodas:

Gerklės vietoje čia yra tai, kad kiekvieną kartą, kai kas nors pataiko vieną iš svetainės puslapių, to vartotojo naršyklėje siekiančiam gauti elementus iš sąrašo.  Dev baigtas ir testavimas įrodė, ko reikia stabilios ir užpildydamas, uo nebūtina daugiau nei 99% laiko nuo meniu retai keičiasi.  Ji taip pat turi keistą UI įtakos, kuri yra paplitusi šioje brave new world hiper ajaxy interneto svetainėse-puslapio teikia ir tik tada meniu padaryti.  Tai nervingumas ir blaško dėmesį, mano nuomone.  Ir nervingumas. Taigi, Kaupimas talpykloje. 

Modifikavau logika thusly:

  • Ieškoti slapuką į naršyklę, kuri yra meniu kaip paskutinį kartą skaityti
    • Jei nustatyta,, padaryti jį iš karto.  Negalima laukti puslapio įkėlimą.  (Jums reikia įsitikinkite, kad jūsų HTML yra strategiškai išdėstyti čia, Tačiau tai nėra sunku padaryti).
  • Palaukite, kol puslapio įkėlimą ir padaryti su async skambinti įkelti meniu elementus sąraše naudojant poilsio ar lists.asmx ar kas
  • Palyginti ką aš prieš slapukas
    • Jei jis atitinka, sustoti, sustok
    • Kitaip, naudojant jQuery, dinamiškai užpildyti krūva, jei <Li>'s – yra <UL>
  • Naudoti CSS padaryti visas formatavimas
  • Pelno!

Kai jūs ketinate pasakyti, "Ei! nėra jokių realių buferinės vyksta čia nuo jūs skaitote meniu bet kuriuo atveju kiekvieną kartą.”  Ir tu teisus-aš nepateikiu serverio jokios pertraukos.  Bet ir nes skambutis yra async ir atsitinka po pradinio puslapio HTML krovinio visiškai sudarytų sąlygas, tai "mano" jautriau reaguoti į vartotojo.  Meniu tampa gana daug, kaip puslapio atkreipia.  Jei meniu būna, kad pakeitimas, vartotojas yra veikiamas nervingumas iš naujo parengti meniu, bet tik tą vieną kartą.

Yra keletas būdų, kaip padaryti šį spartinimo veiksmingesnę ir padėti atlikti serverio vienu metu:

  • Įdėti, kad "slapukų talpyklą" galioja ne trumpiau kaip taisyklė 24 valandų arba kai kurie kiti terminai. Tol, kol nėra pasibaigęs slapuko, Naudokite slapuką 's meniu fotografiją ir niekada hit serveris.

Well... that's viską, kas ateina į galvą šiuo metu :). 

Jei kas nors turi kokių nors protingas idėjų čia aš norėčiau žinoti jų.

Ir galiausiai – šis metodas gali būti naudojamas kitų dalykų.  Šis klientas puslapyje yra daug dalykų, duomenų valdomas įvairiuose puslapiuose, Daugelis iš jų keičiasi gana retai (pavyzdžiui, kartą per savaitę arba kartą per mėnesį).  Jei taikote pagal konkrečias sritis funkcijos, galite pateikti ir kvalifikacijų UI traukimas turinį iš vietos slapukas parduotuvė ir padaryti iš karto.  Jis mano greičiau vartotojui, net jei ne serverio bet ciklų.  Jūs gali įrašyti serverio ciklų sprendžiant kai kurių sąlygų ir skatina panaikinti šios vietos slapukų talpyklą.  Tai visos situacijos ir artsy stuff ir tikrai labiausiai įdomus :). 

</pabaigos>

undefinedPrenumeruoti savo dienoraštį.

Sekite mane Twitter ne http://www.twitter.com/pagalvin