Kategorija Arhīvs: JavaScript

HTTP 406 Kļūda, lietojot leņķa $http.get pret SharePoint atpūtas beigu punktiem

Atjauninājums: Marc AD ndersson norādīja uz šo lielisko info gabals: http://Blogs.Office.com/2014/08/13/JSON-Light-Support-Rest-SharePoint-API-Released/. Tas izskaidro daudz :).

Tas var būt sliktākais nosaukums blog post jebkad! Anyhoo.

Es parasti darīt visu manu prototipu pret O365 instances. Man ir mana personīgā gadījumu tāpēc, ka man nav jāuztraucas par to ietekmē kāds cits. Kā malā – atcerieties, kad mēs saucam veic ap virtuālās mašīnas mūsu klēpjdatorus ar SŪNĀM-SQL Server, IIS, izlemt, Hyper-V vs. VMWare? Anyhoo...

Bija izveidojies app izmantojot leņķisko šajā vidē, kas, cita starpā, tas:

$http.Get(serverUrl)
.panākumi(funkcija(datu, statuss, galvenes, Config) {

var getLinksResponse = dati;

getLinksResponse.value.forEach(funkcija(theResult) {

// un tā tālāk, un tā putas

Tas strādā tikai naudas sodu divus dažādus SharePoint tiešsaistes vidē. Tomēr, kad mans kolēģis pārnesuši Cloudshare instances, viņš kļūst HTTP 406 kļūda (kas bija pirmā reize, kad es kādreiz ieguva, ka viens, Tātad... yay, man šķiet). Mums bija pētniecības mazliet un pamanīja, ka "Akceptēt" header ir izslēgts. SharePoint tiešsaistē bija pilnīgi apmierināts ar:

Akceptēt: pieteikums/json

Bet cloudshare instances (kas atrodas prem SP, hosted virtuālā servera) gribēja klasisko "odata = runīgs" papildina arī:

Akceptēt: pieteikums/json;oData = runīgs

Noteikt, ka, mēs pievienojām header kā tādu:

var config = {galvenes: {
"Pieņemt": "lietojumprogrammu/json;oData = runīgs "
}
};

$http.Get(serverUrl,Config)
.panākumi(funkcija(datu, statuss, galvenes, Config) {

var getLinksResponse = dati;

getLinksResponse.value.forEach(funkcija(theResult) {

// un tā tālāk, un tā putas

Ka ticis vaļā no 406, bet to arī mainīt atbildes formāts. Tas bija vairāk … runīgs. (haha!) Nebija vajadzīgas vairākas izmaiņas, un šeit ir gala rezultāts:

var config = {galvenes: {
"Pieņemt": "lietojumprogrammu/json;oData = runīgs "
}
};

$http.Get(serverUrl,Config)
.panākumi(funkcija(datu, statuss, galvenes, Config) {

var getLinksResponse = dati;

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

// un tā tālāk, un tā putas

Tas tikai pārvērtās 30 minūte problēma ne tikai mums, tāpēc mēs tiksim cauri sveikā. Cerams, ka kāds atrod šo noderīga.

</beigās>

Leņķiskais nespēj Bootstrap IE9

Es esmu spēlē ar Angular.js pēdējā ilgi un par dzīvi mani, Nevarēja iegūt manu leņķa progr palaist IE9.  Viņi visi strādā labi IE11, bet IE9 vēlētos parādīt cirtaini bikšturi un līdzīgas biti.

Mēģināja saskatīt, un nevarēja atrast kāds sūdzas par savu problēmu.  Tā strādāja fine, Chrome, IE11, tikai ne IE9.

Bija izmet off par to, ka IE konsole dod man kļūdas, piemēram, tas:

SEC7111: HTTPS drošība ir apdraudēta ar res://ieframe.dll/forbidframing.htm

Šī kļūda bija mani domāšana bija kāda problēma lejupielādējot leņķiskais vai citām bibliotēkām, kas man vajadzīgs.  Kā izrādās, tas nebija jautājums.

Poking ap internets, Es beidzot konstatēts, ka nepieciešams, lai meklētu frāzi "bootstrap" un ka tā šķita bootstrapping nepadevās.  Beigās, mana problēma bija, ka bija rotā manu <HTML> tagā ar atribūtu ng-app, kā:

<HTML ng-app = "MatrixApp">

Nu, ka nestrādāja IE9.  Tā vietā, Es iesaiņota visa pārējā HTML tekstu <organizācija> iekšpusē div un tādā veidā MatrixApp atsauces.

Problēma atrisināta.

Cerams, ka tas ietaupa kādam liekas sāpes.

</beigās>

Pieaug apziņa / JavaScript sistēmas pieņemšana

Mans kolēģis, Javed Ansari (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), wrote īsu kopsavilkuma blog post par ietvaros viņš patīk, vai vismaz ir lietojušas ar ar SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery, šķiet, ir bijusi Viktors uz lauka, tā runāt, gadus, bet citi ir vēl jauna un destilācijas aparātos veida cīnās it, tāpat kā leņķisko. (SPServices, protams, ir dzīvības taupīšana gadus un turpina būt, tāpēc es domāju, ka).

To, ko izmanto cilvēki? Tie ir vērsta vairāk uz korporācijas Microsoft mehāniskai apstrādei (CSOM / JSOM) vai vairāk pret leņķisko pārvietošanu, Nokauts, Ogli, uc?

Man ir augošs aizspriedumiem pret šīm sistēmām nav izstrādātas korporācijā Microsoft. Domāju, MSFT stuff ir grūtāk un grūtāk strādāt ar, prasa gandrīz tikpat daudz mācīšanās līkni kā vecmodīgās servera pusē dev.

Publicēt komentāru šeit vai vairāk pie Big Apple SharePoint Ja jūs vēlaties, lai apspriestu (Big Apple būs vairāk labu diskusiju iespējamību).

</beigās>

Pārvarēt kaitinošas problēmas ar relatīvo URL SharePoint Quick Launch

Gribēja, lai pievienotu saiti ātrās palaišanas navigācijas citu dienu un SharePoint pastāstīja:

image

Tīra teksta versija, kas ir:

Nodrošinātu, ka URL ir derīgs un sākas ar derīgu rakstzīmi (numura zīme (#) vai uz priekšu vērstu slīpsvītru (/)) vai derīgu atbalstītu protokolu (piemēram, ' http://’, "https://’, "fails://’, "ftp://’, "mailto:’, "jaunumi:’).

"Blech un Baku!"Es teicu.

Risinājums, lai tas ir izmantot JavaScript atrast zināmu saiti ātrās palaišanas un novērst tās darbību.

Lai pārbaudītu šo, pievienot jaunu saiti uz testa vietā thusly:

image

Es izmantot jQuery. Lai to atrisinātu, iegūt dažas JavaScript un jQuery uz lapu, izmantojot savu iecienītāko metodi un ar līniju kods, kas līdzīgs šim:

 

$(dokumentu).gatavs( funkcija () {

    $("a:satur("Testa URL Nomaiņa")").noklikšķiniet uz(funkcija () { brīdinājums("uzvedības izmaiņas noklikšķiniet uz!"); atgriešanās viltus;});

});

Un Bobs ir tavs tēvocis.

JQuery selektoru atrod katru <a> frāzi, ka tās nosaukums ir "Testa URL Nomaiņa". Jūs varat atrast melodija, atkarībā no jūsu saites un tādas.

Uzklikšķināt(funkcija() ignorē neatkarīgi no SharePoint būtu jādara, kad lietotājs noklikšķina uz. Pārliecinieties, ka jums "atgriezties viltus" vai cits to darīt jūsu stuff, un mēģiniet href lieta pārāk, kas ir gandrīz noteikti nav jūsu mērķis.

Tas tika darīts, un testa SharePoint online vidē, bet vajadzētu strādāt arī ar 2010 un agrāk pārāk.

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

Nabaga cilvēks ir kešatmiņā, JavaScript

[TL;DR versija: izmanto sīkdatnes, lai saglabātu async sarunu rezultāti; padarīt rezultāti pēdējos async aicina nekavējoties un pēc tam apstiprināt tos pēc lapas ielādes.]

Es esmu strādājusi par SharePoint iekštīkla vietnes klientu, ka līdzekļi, cita starpā, stilizētu sekundārās navigācijas, kuru izvēlnes opcijas tiek pārvaldīti regulāru veco pielāgotu sarakstu.  Ideja ir tāda, ka klients saņem, neietekmējot vai slimas ar globālās navigācijas uzdeva to kontrolēt "viņu" portāla izvēlne.

(tur ir kaut kas ārkārtīgi graujošām par pievienojot CEWP, kas norāda uz HTML failu, kas ielādē daži CSS un JS pašos pamatos mainīt gandrīz visu par vietņu uzvedība... bet tas ir citā amatā)

Šī ir diezgan vienkāršs kods:

Iekaisis vietas šeit ir tas, ka katru reizi, kad kāds pieskaras viens no vietnes lapas, šī lietotāja web pārlūkprogrammā ir sasniedzamas, lai saņemt vienumus no saraksta.  Pēc tam, kad ir pabeigta dev un pārbaude ir pierādījusi lietas ir stabilas un pabeigt, šo aicinājumu nav vajadzīga vairāk nekā 99% laika, jo reti maina izvēlni.  Tai arī dīvaini UI ietekmē, kas ir kopīgs šo drosmīgs jaunu pasauli, hiper ajaxy tīmekļa vietnes-lappuse tiek atveidota, un tikai tad izvēlnē padarīt.  Tas ir nervozs un uzmanību, manuprāt.  Un nervozs. Tik, kešatmiņā. 

Loģika ir rediģēts thusly:

  • Meklēt cookie pārlūks, kas satur izvēlnes, kā es to izlasītu pēdējās
    • Ja konstatēts, padarīt to nekavējoties.  Negaidiet, lai lapas lejuplādēšanas pabeigšanai.  (Jums ir jāpārliecinās, ka jūsu HTML stratēģiski novietoti šeit, bet tas nav grūti izdarāms).
  • Pagaidiet, līdz lappuse ir lejuplādēšanas pabeigšanai un veikt zvanu izvēlnes elementus sarakstā, izmantojot atpūtas vai lists.asmx vai kāds ielādējiet async
  • Salīdzināt to, ko es saņēmu pret cookie
    • Ja tas atbilst, apstājieties
    • Pretējā gadījumā, izmantojot jQuery, dinamiski aizpildīt ķekars, ja <Li>ir programmā <UL>
  • Izmantot CSS darīt visu formatējumu
  • Peļņa!

Daži no jums gatavojas teikt, "Hei! nav, nav īsta caching notiek šeit, jo jūs lasāt izvēlnes, tomēr katru reizi, kad.”  Un tev taisnība-es neesmu dodot serveris nekādu pārtraukumu.  Bet jo async izsaukums un notiek pēc sākotnējās lappuses HTML komerckrava pilnībā padara, to "jūtas" vairāk reaģē uz lietotāja.  Izvēlnes padara diezgan daudz kā lapa vērš.  Ja notiek izmaiņas izvēlnes, lietotājs ir pakļauts nervozitātes atkārtoti izdarīt no izvēlnes, bet viena vienīga reize.

Ir daži veidi, kā padarīt šo kešatmiņā efektīvākas un izpalīdzēt serverī vienlaikus:

  • Ielikt "sīkfailu kešatmiņa" ir derīga vismaz kārtulā 24 stundas vai kādu citu laika periodu. Kamēr nav beidzies sīkfailu, izmantojiet izvēlni sīkfailu momentuzņēmumu un nekad hit servera.

Nu... tas ir viss, kas nāk prātā tieši tagad :). 

Ja kāds ir jebkurš gudrs idejas šeit labprāt vēlētos zināt tos.

Un visbeidzot – šo tehniku var izmantot arī citas lietas.  Šī klienta lapa ir vairākas lietas, datu vadītas dažādās lappusēs, daudzi no viņiem mainās samērā reti (piemēram, reizi nedēļā vai reizi mēnesī).  Ja jums mērķis konkrētas jomas funkcionalitāti, jūs varat dot vairāk atsaucīgāku UI, velkot saturu no vietējo Sīkfails uzglabāt un padarot nekavējoties.  Tā uzskata ātrāk lietotājs, pat tad, ja nav krājat naudu serverim jebkurā cikliem.  Jums var saglabāt serverī cikli, izlemjot par dažiem nosacījumiem un trigeriem par spēkā neesošiem šī vietējā sīkfailu kešatmiņa.  Tas ir visas situācijas un artsy stuff, un tiešām visvairāk jautru :). 

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin