Archifau Categori: JavaScript

HTTP 406 Gwall Pryd Yn Arfer onglog $ http.get Yn erbyn Pwyntiau SharePoint REST End

Diweddariad: Nododd hwn darn mawr o wybodaeth am marc AD ndersson: http://blogs.office.com/2014/08/13/json-Light-support-Rest-SharePoint-API-released/. Mae hynny'n egluro llawer :).

Efallai fod y teitl swydd blog gwaethaf erioed! Anyhoo.

Fel arfer y gwnaf bopeth o fy prototeipio erbyn enghraifft O365. Mae gennyf fy achos personol fel bod ddim yn gorfod poeni am unrhyw un arall sy'n effeithio ar. Wrth fynd heibio – cofio pan alwn Cynhaliwyd o amgylch rhith peiriannau ar ein gliniaduron gyda MWSOGL – gweinydd SQL, IIS, benderfynu vs Hyper-V. VMWare? Anyhoo...

Wedi datblygu ap ddefnyddio Angular yn yr amgylchedd hwn yw, ymhlith pethau eraill, hwn:

$http.get(serverUrl)
.llwyddiant(swyddogaeth(data, statws, Penynnau, Ffurfweddu) {

var getLinksResponse = data;

getLinksResponse.value.forEach(swyddogaeth(theResult) {

// ac ati a bytheirio felly

Roedd hyn yn gweithio ychydig iawn mewn dau wahanol SharePoint amgylcheddau ar-lein. Fodd bynnag,, pan oedd fy nghyd-Aelod yn ei ported i Cloudshare yr achos, ei fod yn cael HTTP 406 gwall (a oedd y tro cyntaf a gefais erioed mai un, felly... yay, am wn i). Oedd ychydig o ymchwil ac yn sylwi bod y pennawd "Derbyn" oddi ar. SharePoint ar-lein yn berffaith hapus gyda'r:

Derbyn: cais/json

Ond y lle cloudshare (sydd yn cefnogi pobl ar prem, gynhaliwyd yn weinydd rhithwir) am y clasurol "odata = amleiriog" ychwanegodd yn ogystal:

Derbyn: cais/json;odata = amleiriog

I ddatrys hynny, Ychwanegwyd y pennawd fel y cyfryw:

Ffurfweddu var = {Penynnau: {
'Derbyn': ' cais/json;odata = amleiriog '
}
};

$http.get(serverUrl,Ffurfweddu)
.llwyddiant(swyddogaeth(data, statws, Penynnau, Ffurfweddu) {

var getLinksResponse = data;

getLinksResponse.value.forEach(swyddogaeth(theResult) {

// ac ati a bytheirio felly

Bod cael gwared ar y 406, ond roedd hefyd wedi newid y fformat yr ymateb. Yr oedd mwy... amleiriog. (haha!) Yr oedd angen mwy o newidiadau ac yma yn y canlyniad terfynol:

Ffurfweddu var = {Penynnau: {
'Derbyn': ' cais/json;odata = amleiriog '
}
};

$http.get(serverUrl,Ffurfweddu)
.llwyddiant(swyddogaeth(data, statws, Penynnau, Ffurfweddu) {

var getLinksResponse = data;

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

// ac ati a bytheirio felly

Trodd hyn dim ond i 30 broblem funud i ni, Felly yr ydym yn lucked. Gobeithio rhywun canfod hyn yn ddefnyddiol.

</diwedd>

Onglog Methu bootstrap yn IE9

Dwi wedi yr wedi chwarae o gwmpas gyda Angular.js am y tro olaf hir tra a bywyd imi, Ni chefais fy apps onglog i lansio yn IE9.  Maent oll yn gweithio ddirwy yn IE11 ond byddai IE9 ddim ond yn dangos y fframiau cyrliog a darnau tebyg.

Chwilio o gwmpas, ac ni allem ddod o hyd i unrhyw un sy'n cwyno am ei broblem.  Mae'n gweithio'n iawn yn Chrome, IE11, Nid IE9.

Roedd fy nhaflu oddi ar y ffaith bod roedd Consol IE yn rhoi imi camgymeriadau fel hyn:

SEC7111: Mae diogelwch HTTPS yn cael ei beryglu gan dag://ieframe.dll/forbidframing.htm

Roedd gwall hwnnw mi feddwl oedd rhai broblem a llwytho i lawr y onglog neu llyfrgelloedd eraill yr oedd angen imi.  Fel mae'n troi allan, Nid oedd y broblem.

Drwy chwilio o gwmpas y internets, Yn olaf cefais fod angen i mi chwilio am ymadrodd "bootstrap" a bod yr ymddangosai fel yr Ymddangosai'r oedd yn methu.  Yn y diwedd, fy broblem oedd bod Roedd yr addurno fy <html> tag priodoledd y ng-app, fel yn:

<html ng-ap = "MatrixApp">

Wel, a doeddwn i ddim yn gweithio i IE9.  Yn lle hynny, Lapio fy holl weddill HTML yn y <corff> tu mewn div a cyfeiriadau MatrixApp y ffordd honno.

Datrys y broblem.

Gobeithio Mae hyn yn arbed rhywun rhai galar.

</diwedd>

Ymwybyddiaeth Tyfu / Mabwysiadu Fframweithiau JavaScript

Mae fy nghydweithiwr, Javed Ansari (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), ysgrifennu post blog crynodeb byr ar fframweithiau Mae ef yn hoffi neu o leiaf wedi bod yn defnyddio â â SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

Ymddengys fod jQuery wedi bod yn ennill y dydd ar y maes, felly i siarad, ers blynyddoedd bellach, ond mae'r lleill yn fwy newydd a lluniau llonydd yn fath o brwydro ei, fel Angular. (SPServices, wrth gwrs, wedi achub bywydau ar gyfer y blynyddoedd a bydd yn parhau i fod felly credaf).

Beth mae pobl yn ei defnyddio? Maent yn canolbwyntio mwy ar offer Microsoft (CSOM / JSOM) neu symud mwy tuag at Angular, Croesawi, Gwaelod'a, ac ati?

Mae gennyf gogwydd cynyddol at fframweithiau hyn nad ydynt yn Microsoft. Credaf y stwff MSFT yn galetach ac yn fwy anodd i weithio gyda, angen bron cymaint o gromlin ddysgu fel datblygiad ochr y gweinydd hen.

Ar ôl sylwadau yma neu drosodd ar SharePoint afal mawr Os ydych am i drafod (Bydd afal mawr yn cael mwy o debygolrwydd o drafodaeth dda).

</diwedd>

Goresgyn Problem Blino gyda URLs cymharol yn SharePoint Chwim Launch

Yr oeddwn am i ychwanegu dolen at navigation lansio cyflym y dydd arall a dywedodd SharePoint wrthyf:

image

Fersiwn testun pur o hynny:

Sicrhau bod yr URL yn ddilys ac yn dechrau gyda naill ai cymeriad dilys (arwydd Rhif (#) neu slaes ymlaen (/)) neu brotocol gyda chymorth dilys (er enghraifft,, ' http://', ' https://', ' ffeil://', ' ftp://', ' e-bost:', ' newyddion:').

'Blech a brech yr!"Dywedais.

Gwasanaeth i hyn yw defnyddio JavaScript i ddarganfod cysylltiad hysbys yn lansio cyflym a diystyru ei ymddygiad.

I brofi hyn, ychwanegu cysylltiad newydd i'ch safle prawf thusly:

image

Defnyddiais jQuery. I'w datrys, cael rhai JavaScript a jQuery ar dudalen drwy ddefnyddio eich hoff dechneg a gyda llinell Cod fel hyn:

 

$(dogfen).barod( swyddogaeth () {

    $("1:cynnwys('Rhoi prawf' URL newydd')").cliciwch(swyddogaeth () { rhybuddio("Cliciwch newid ymddygiad!"); dychwelyd ffug;});

});

A Bob eich ewythr.

Bydd y botwm jQuery yn canfod pob <1> tag wedi "URL prawf newydd" yn ei enw. Efallai y byddwch am i ddod o hyd i-alaw a dibynnu ar eich cysylltiad a'ch o'r fath.

Y.click(swyddogaeth() diystyru beth bynnag byddai SharePoint wedi gwneud pan roedd y defnyddiwr wedi clicio. Gwnewch yn siŵr bod eich "dychwelyd ffug" neu fel arall bydd yn gwneud eich pethau ac wedyn yn ceisio y peth href yn rhy, bron yn sicr nad yw'n eich nod.

Gwnaed hyn a brawf mewn amgylchedd ar-lein SharePoint ond dylai weithio dda yn 2010 a gynharach rhy.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Caching Dyn tlawd yn JavaScript

[TL;Fersiwn DR: defnyddio briwsion i storio canlyniadau'r async galwadau; rendr canlyniadau'r gorffennol async galwadau ar unwaith ac wedyn eu dilysu ar ôl llwytho tudalen.]

Dwi wedi bod yn gweithio ar safle mewnrwyd SharePoint i cleient y nodweddion, ymhlith pethau eraill, mordwyo uwchradd stylized eu dewisiadau dewislen yn cael eu rheoli drwy'r rhestr bersonol hen rheolaidd.  Y syniad yw bod y cleient yn cael i reoli ddewislen "eu" safle heb sy'n effeithio ar neu'n cael eu heffeithio gan y mordwyo byd-eang a roddir allan gan ei.

(Mae rhywbeth hynod o thwyllodrus am ychwanegu CEWP sy'n pwyntio at ffeil HTML yn y llwythi rhai CSS a JS i bron popeth am ymddygiad y safle … yn ei newid yn sylfaenol ond mae hynny ar gyfer swydd arall)

Y Cod ar gyfer hwn eithaf syml:

  • Aros am y dudalen gorffen llwytho a gwneud async alw lwytho'n eitemau ar y fwydlen o restr gan ddefnyddio gweddill neu lists.asmx neu beth bynnag
  • Gan ddefnyddio jQuery, ddeinamig boblogi criw os <li>y tu mewn yn rhiant <st> (Gweler erthygl Christian Pinder yma am esboniad syml o hwn tecnnique)
  • Ddefnyddio CSS i wneud yr holl fformatio
  • Elw!

Y fan a'r lle yma yn boenus yw, bob tro y mae unrhyw un yn taro un o dudalennau y safle, Mae porwr gwe bod defnyddiwr yn estyn allan i gael eitemau oddi ar y rhestr.  Unwaith y bydd datblygiad yn gyflawn ac yn profi wedi profi pethau i fod yn sefydlog ac yn gyflawn, alwad hon yn ddiangen mwy nag 99% yr amser ers y fwydlen yn anaml yn newid.  Mae hefyd yn effeithio ar UI rhyfedd sy'n gyffredin yn y byd newydd hwn dewr o wefannau hyper-ajaxy – Mae y dudalen yn ei gwneud, a dim ond wedyn yw y fwydlen rendr.  Mae'n ansicr ac yn tynnu sylw yn fy marn i.  Ac yn ansicr. Felly, storio. 

Addaswyd y rhesymeg yr thusly:

  • Edrych ar gyfer briwsionyn yn y porwr sy'n cynnwys y fwydlen fel y darllenais ddiwethaf mae'n
    • Os yw dod o hyd i, ei wneud ar unwaith.  Peidiwch ag aros am y dudalen i orffen llwytho.  (Mae angen i chi wneud siwr yn eich HTML strategol y sefyllfa yma, ond nid yw'n anodd i'w wneud).
  • Aros am y dudalen gorffen llwytho a gwneud async alw lwytho'n eitemau ar y fwydlen o restr gan ddefnyddio gweddill neu lists.asmx neu beth bynnag
  • Cymharu beth gen i erbyn briwsionyn
    • Os yn cyfateb, STOPIO
    • Fel arall,, gan ddefnyddio jQuery, ddeinamig boblogi criw os <li>y yn <st>
  • Ddefnyddio CSS i wneud yr holl fformatio
  • Elw!

Rhai ohonoch yn mynd i'w ddweud, "hei! Nid oes na gwirioneddol storio digwydd yma ers eich bod yn darllen y fwydlen beth bynnag bob tro."  A ydych chi'n iawn – nid wyf yn ildio unrhyw fath o seibiant y gweinydd.  Ond oherwydd y galw async ac sy'n digwydd ar ôl y dudalen cychwynnol y mae pwysau'r HTML llawn gwneud, "deimlad" fwy ymatebol i'r defnyddiwr.  Mae y fwydlen yn gwneud yn eithaf gymaint ag y mae y dudalen yn tynnu.  Os bydd y fwydlen yn digwydd i newid, Mae y defnyddiwr yn destun ansicr ail-lunio o'r fwydlen, ond dim ond y un pryd.

Ceir rhai ffyrdd o wneud storio hwn yn fwy effeithiol a helpu allan y gweinydd ar yr un pryd:

  • Yn rheol bod y "storfa briwsionyn" yn ddilys am o leiaf 24 oriau neu rhai amserlen eraill. Cyn belled â'u nid oes dim briwsion wedi dod i ben, defnyddio ciplun fwydlen y briwsion a erioed wedi cyrraedd y gweinydd.

Wel... Dyna'r cyfan sy'n dod i'r meddwl ar hyn o bryd :). 

Os oes gan unrhyw un unrhyw syniadau glyfar yma byddwn yn hoffi gwybod eu.

Ac yn olaf – y gellir defnyddio'r dechneg hon ar gyfer pethau eraill.  Tudalen y cleient hwn mae nifer o bethau data yrru ar dudalennau amrywiol, newid llawer ohonynt yn gymharol anaml (fel unwaith yr wythnos neu unwaith y mis).  Os ydych chi'n targedu ardaloedd penodol o ymarferoldeb, Gallwch roi UI fwy ymatebol drwy dynnu cynnwys o storfa briwsionyn lleol a rendro ar unwaith.  Mae'n teimlo gyflymach i'r defnyddiwr hyd yn oed os nid ydych chi'n arbed y gweinydd unrhyw feiciau.  Chi Gall arbed y cylchoedd gweinydd drwy benderfynu ar rai amodau a sbardunau i annilysu'r hwn cache briwsionyn lleol.  Mae hynny'n gwbl sefyllfaol a stwff artsy ac mewn gwirionedd mwyaf o hwyl :). 

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin