Categoria Arkistot: Ohjelman

HTTP 406 Virhe käytettäessä kulmikas $http.get vastaan SharePoint loput loppupisteet

Päivitys: Marc AD ndersson huomautti, tämä suuri pala info: http://blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Tämä selittää paljon :).

Se voi olla pahin otsikko blogi koskaan! Anyhoo.

En yleensä kaikki minun prototyyppien vastaan O365-esiintymä. Minulla on minun henkilökohtainen tapauksessa, jotta ei tarvitse olla huolissaan vaikuttaa joku muu. Sivuhuomautuksena-muistettava, kun kehotamme kuljettaa ympäri virtuaalikoneita meidän läppäreissä MOSS – SQL Server, IIS, päättää Hyper-V vs. VMWare? Anyhoo...

Olin kehittänyt app avulla kulmikas tässä ympäristössä, joka tekee, muun muassa, Tämä:

$http.Get(serverUrl)
.menestys(funktio(tiedot, tila, otsikot, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funktio(tulokset toimijalle) {

// ja niin edelleen ja niin Vaahdota

Tämä toimi hienosti kahdessa eri SharePoint online ympäristöissä. Kuitenkin, Kun kollegani ennustaa sen Cloudshare esiintymä, Hän oli tulossa HTTP 406 Virhe (mikä oli ensimmäistä kertaa olen koskaan saanut tuosta, joten... jee, Arvaan). Teimme vähän tutkimusta ja huomasin, että "Hyväksy"-otsikon oli pois. SharePoint Onlinessa on täysin tyytyväinen:

Hyväksy: sovellus/json

Mutta cloudshare esiintymä (Mikä on SP prem, isännöi vuonna virtuaalinen palvelin) Ostetaan klassikko "odata = verbose" lisätään myös:

Hyväksy: sovellus/json;OData = verbose

Vahvistaa, että, Lisäsimme otsikon sellaisenaan:

var config = {otsikot: {
"Salli": "application/json;OData = verbose "
}
};

$http.Get(serverUrl,config)
.menestys(funktio(tiedot, tila, otsikot, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funktio(tulokset toimijalle) {

// ja niin edelleen ja niin Vaahdota

Että pääsi eroon 406, mutta myös muuttaa vastauksen muoto. Se oli enemmän... verbose. (haha!) Lisää muutoksia ja tässä on lopputulos:

var config = {otsikot: {
"Salli": "application/json;OData = verbose "
}
};

$http.Get(serverUrl,config)
.menestys(funktio(tiedot, tila, otsikot, config) {

var getLinksResponse = data;

getLinksResponse.d.Results.forEach(funktio(tulokset toimijalle) {

// ja niin edelleen ja niin Vaahdota

Tämä vain tuli 30 meille hetken ongelma, joten meidän lucked. Toivottavasti joku pitää tätä hyödyllisenä.

</loppu>

Kulma ei Bootstrap IE9

Olen pelannut noin kanssa Angular.js viimeisen kauan vaikka ja elämän minua, En voinut saada minun kulmikas apps käynnistää IE9.  Ne kaikki toimivat hyvin IE11 mutta IE9 vain osoittavat aaltosulkeet ja samanlainen bittiä.

Olen etsinyt ympäri ja löytänyt kenenkään valittaa hänen ongelmansa.  Se työntekijä hienosti Chrome, IE11, Pidä IE9.

Oli heittänyt pois se, että IE konsoli antaa minulle virheitä, kuten tämä:

SEC7111: HTTPS turvallisuus vaarantuu res://ieframe.dll/forbidframing.htm

Virhe oli minut ajattelemaan, oli joitakin ongelmia ladata kulmikas tai muita kirjastoja, jotka tarvitaan.  Kuten on käynyt ilmi, Kyse ei ole.

Tönäisi kaikkialla internets, Sain vihdoin selville, että minun piti etsiä lause oli "bootstrap" ja tuntui kuin bootstrapping jätti.  Lopulta, minun ongelmani oli, että oli koristeltu minun <HTML> Tag ng-app-määrite, kuten:

<HTML ng-app = "MatrixApp">

Hyvin, se ei toimi IE9.  Sen sijaan, Käärin kaikki muut HTML-koodi <kehon> sisällä div ja viittaukset MatrixApp näin.

Ongelma ratkaistu.

Toivottavasti tämä säästää jonkun noin surua.

</loppu>

Kasvava tietoisuus / Hyväksyminen JavaScript puitteet

Kollegani, Vesa Anttila (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), kirjoitti lyhyt yhteenveto blogi puitteissa hän haluaa tai ainakin on käyttänyt SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery on ilmeisesti victor kentällä, niin sanotusti, vuoden ajan, mutta toiset ovat enemmän uusia ja still tavallaan taistelee sen, kuten kulmikas. (SPServices, Tietysti, on elämän säästäjä vuosia ja on edelleen niin mielestäni).

Mitä ihmiset käyttävät? Ne keskittyvät enemmän Microsoftin työkalut (CSOM / JSOM) tai siirtymässä enemmän kohti kulmikas, Pudotuspelit, Hiillos, jne?

Olen yhä bias kohti näitä muita kuin Microsoftin järjestelmiä. Mielestäni MSFT tavaraa on vaikeampi työskennellä, vaatii lähes yhtä paljon oppimiskäyrä kuin vanhan palvelimen dev.

Kommentoida täällä tai haltuunsa Big Apple SharePoint Jos haluat keskustella (Big Apple on enemmän todennäköistä hyvä keskustelu).

</loppu>

Voittaa kiusallisen ongelman kanssa SharePoint kiire aloittaa suhteellisia URL-osoitteita

Halusin linkin lisääminen pikakäynnistykseen navigointi toinen päivä ja kertoi SharePoint:

image

Pelkkää tekstiä joka on:

Varmista, että URL on kelvollinen ja alkaa joko kelvollinen merkki (numeron merkki (#) tai vinoviiva (/)) tai kelvollinen tuettu protokolla (esimerkiksi, "http://’, "https://’, "tiedosto://’, "ftp://’, "mailto:’, ' Uutiset:’).

"Blech ja pox!"Sanoin.

Workaround jotta nyt kuluva on ohjelman avulla löytää tunnettu link kiire aloittaa ja ohittaa sen.

Voit testata tämän, Lisää uusi linkki testi sivusto thusly:

image

Käytin jQuery. Ratkaista se, Ohjelman ja jQuery sivulle käyttämällä suosikki tekniikka ja rivi koodia kuten tämä:

 

$(asiakirja).valmis( funktio () {

    $("a:sisältää(Testaa URL korvaaminen)").Valitse(funktio () { hälytys("muuttunut napsautustoiminnasta!"); paluu False;});

});

Ja Bob on setäsi.

JQuery valitsin löytää joka <a> koodi, joka on "Testaa URL korvaaminen" sen nimi. Haluat ehkä löytää-biisi, joka riippuu linkki ja tällainen.

.click(funktio() ohittaa mitä SharePoint olisi tehnyt, kun käyttäjä napsauttaa. Varmista, että olet "return false" tai muuten se tehdä juttuja ja sitten yrittää href asia liian, joka ei lähes varmasti ole sinun tehtäväsi.

Näin tehtiin ja testi SharePoint online-ympäristöön, mutta olisi toimi hyvin 2010 ja aiemmin liian.

</loppu>

undefinedTilaa blogiin.

Noudata minut viserrys http://www.twitter.com/pagalvin

Köyhän on välimuistin ohjelman

[TL;DR versio: käytä evästeitä vanhempi puhelut tulokset; tekevät viime vanhempi puhelut tulokset välittömästi ja vahvistaa niitä jälkeen sivun lataus.]

Olen työskennellyt SharePoint intranet-sivustossa asiakas että ominaisuudet, muun muassa, tyylitelty toissijaiseen selailuun jonka valikkovaihtoehdot hallinnoidaan kautta säännöllisesti vanha mukautetun luettelon.  Ajatuksena on, että asiakas saa hallita "niiden" sivuston valikko vaikuttamatta tai sairastumatta maailmanlaajuisen satelliittinavigointijärjestelmän ojensi sen.

(on jotain uskomattoman kumouksellista lisäämisestä CEWP, joka viittaa HTML-tiedosto joka lataa CSS ja JS perusteellisesti lähes kaikki sivuston käytös... mutta se on toiseen virkaan)

Melko yksinkertainen koodi:

Kipeä paikalla täällä on aina joku osuu sivuston sivut, käyttäjän selain ulottuu saada kohteita luettelosta.  Kun dev on valmis ja testaus on osoittanut asiat on vakaa ja täydellinen, Tämä kutsu on tarpeetonta yli 99% aikaa, koska valikko harvoin muuttuu.  On myös outo UI vaikuttaa, joka on yleinen uudessa uljaassa maailmassa hyper ajaxy verkkosivujen – kohdistuksessa ja vasta sitten valikko tehdä.  Se on hermostunut ja häiritseviä mielestäni.  Ja hermostuneisuus. Niin, välimuistiin. 

Olen muuttanut logiikan thusly:

  • Etsi evästeen selaimessa, joka sisältää valikon olen viimeksi lukenut
    • Jos löytyy, tehdä välittömästi.  Älä odota hotellipoika jotta lopettaa lastaus.  (Haluat Varmista, että HTML on strategisesti sijoitettu tähän, mutta se ei ole vaikea tehdä).
  • Odota, sivu latautunut ja tehdä asynkroninen soittaa lataamaan valikkovaihtoehtojen luettelosta, käyttäen loput tai lists.asmx tai mitä tahansa
  • Vertaa, mitä olen saanut vastaan evästeen
    • Jos se vastaa, Seis
    • Muuten, käyttäen jQuery, dynaamisesti täyttää joukko jos <Li>on tässä <UL>
  • Käytä CSS tehdä kaikki muotoilut
  • Voitto!

Jotkut teistä tulevat sanomaan, "Hei! ei ole todellista caching menossa täällä, kun luet menu joka tapauksessa joka kerta, kun.”  Ja olet oikeassa-en anna palvelimen kaikenlaista tauko.  Mutta koska puhelu asynkronisen ja tapahtuu jälkeen sivun alkuperäinen HTML payload täysin tekee, "tuntuu" enemmän altis jotta käyttäjä.  Valikko tekee melko sivun lähestyessä.  Jos valikon tapahtuu muutos, käyttäjä joutuu hermostunut uudelleen piirtää valikko, mutta vain tämän yhden kerran.

Olemassa joitakin keinoja tehostaa tämä välimuisti ja auttaa palvelimelle samaan aikaan:

  • Sisältö "cookie cache" on voimassa vähintään 24 tuntia tai muut aikataulua. Niin kauan kuin ei ole vanhentunut eväste, käyttää cookie's menu tilannevedosta ja koskaan osuma palvelimen.

No... se on kaikki mitä tulee mieleen juuri nyt :). 

Jos joku on mitään viisaita ajatuksia tästä olisi kiva tietää ne.

Ja lopuksi-tätä tekniikkaa voidaan käyttää muita juttuja.  Tämän asiakkaan sivulla on monia dataan perustuva asioita eri sivuille, Monet niistä muuttuvat melko harvoin (kerran viikossa tai kerran kuukaudessa).  Jos laadit tietyillä aloilla toiminnallisuutta, Voit antaa herkemmin UI vetämällä sisältöä paikallisen evästeen Storesta ja tekee välittömästi.  Tuntuu nopeammin käyttäjälle, vaikka ei tallennetaan palvelimen mitään sykliä.  Voit voi Tallenna palvelimen sykliä päättäessään joitakin edellytyksiä ja laukaisee mitätöidä paikallisen evästeen välimuistin.  Thats kaikki tilannekohtaista ja muka juttuja ja todella hauskaa :). 

</loppu>

undefinedTilaa blogiin.

Noudata minut viserrys http://www.twitter.com/pagalvin