Категория Архиви: JavaScript

HTTP 406 Грешка при използване на ъглови $http.get срещу SharePoint ОСТАНАЛИТЕ крайни точки

Актуализация: Марк АД ndersson посочи, това голямо парче на информация: HTTP://blogs.Office.com/2014/08/13/JSON-Light-support-REST-SharePoint-API-Released/. Това обяснява много :).

Това може да бъде най-лошото заглавието на блог пост някога! Anyhoo.

Обикновено се правят всички на моята прототипи срещу O365 екземпляр. Имам моя личен случай, така че не трябва да се притеснявате за някой друг, засягащи. Като настрана-не забравяйте, когато ние наричаме се извършват около виртуални машини за нашите лаптопи с мъх – SQL Server, IIS, определящ Hyper-V срещу. VMWare? Anyhoo...

Се е развил ап използване на Ъгловата в тази среда, която прави, наред с други неща, Това:

$http.get(serverUrl)
.успех(функция(данни, статус, заглавки, довереник) {

var getLinksResponse = данни;

getLinksResponse.value.forEach(функция(Резултатът) {

// и така нататък и така пяна

Това е движение прав глоба в две различни среди SharePoint онлайн. Въпреки това, Когато колегата ми го пренесли на копие на Cloudshare, Той се HTTP 406 грешка (който е за първи път, аз винаги имам една, така... Уау, Предполагам). Направихме малко изследвания и забелязах, че заглавния блок на "Приемат" е изключено. SharePoint онлайн е напълно щастлив с:

Приемете: приложение/json

Но на cloudshare съд (което е SP на prem, домакин на виртуален сървър) Исках на класическия "odata = многословно" прибавка in както и:

Приемете: приложение/json;oData = многословно

Да се определи, че, Ние добавя заглавието като такива:

var довереник = {заглавки: {
"Приемат": "приложение/json;oData = многословно "
}
};

$http.get(serverUrl,довереник)
.успех(функция(данни, статус, заглавки, довереник) {

var getLinksResponse = данни;

getLinksResponse.value.forEach(функция(Резултатът) {

// и така нататък и така пяна

Че се отървах от 406, но това също се промени формата на отговор. Това беше повече... многословен. (Haha!) Ето крайния резултат и повече промени са били необходими:

var довереник = {заглавки: {
"Приемат": "приложение/json;oData = многословно "
}
};

$http.get(serverUrl,довереник)
.успех(функция(данни, статус, заглавки, довереник) {

var getLinksResponse = данни;

getLinksResponse.d.results.forEach(функция(Резултатът) {

// и така нататък и така пяна

Това само се превърна в 30 минута проблем за нас, така че ние lucked. Надявам се някой намери тази полезна.

</край>

Ъглови не успее да Bootstrap в IE9

Аз бях играя наоколо с Angular.js за последно дълго време и за живота на мен, НЕ можех да ми ъглови приложения да започне през IE9.  Всички те работят добре в IE11 но IE9 ще покаже само фигурни скоби и други подобни бита.

Аз търся наоколо и не можах да намеря някой оплаквам за проблема си.  Тя работи добре в хром, IE11, просто не IE9.

Аз бях изхвърлен от факта, че IE конзолата ми даваше грешки като тази:

SEC7111: HTTPS сигурност е компрометирана от ВЕИ://ieframe.dll/forbidframing.htm

Тази грешка ми имаше някакъв проблем изтегляне ъглови или други библиотеки, които трябваше да мисля беше.  Както се оказва, Това не е проблем.

От изпълзяват около internets, Най-накрая разбрах, че трябваше да се търси за фразата "bootstrap" и че тя изглеждаше като bootstrapping изневеряваше.  В края, Моят проблем е, че са украсени ми <HTML> етикет с ПГ-ап атрибут, както и в:

<HTML ПГ-ап = "MatrixApp">

Ами, Това не е работа за IE9.  Вместо това, Аз опаковани всички останалата част от HTML в <тяло> вътре в div и препратки MatrixApp по този начин.

Проблем решен.

Надявам се това спестява някой някои мъка.

</край>

Нарастващото осъзнаване / Приемане на JavaScript рамки

Моят колега, Джавед Ансари (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), написал кратко обобщение блог пост на рамки той харесва или поне е използвал със с SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery изглежда да са били Виктор на полето, така да се каже, вече години, но другите са по-нови и снимки нещо като бори, като Ъгловата. (SPServices, Разбира се, е живот спасявам за години и ще продължи да бъде така мисля).

Какви са хора използват? Са те се фокусира повече върху инструменти на Microsoft (CSOM / JSOM) или по-скоро към Ъгловата преместване, Нокаут, Въглен, н?

Имам нараства пристрастия към тези не Microsoft рамки. Мисля, че MSFT неща е по-трудно да работи с, изискващи почти по-голямата част от кривата на обучение като стар стил от страна на сървъра dev.

Публикувай коментар тук или в продължение на Big Apple SharePoint Ако искате да обсъдят (Big Apple ще има повече вероятността от една добра дискусия).

</край>

Преодоляване на досаден проблем с относителни URL адреси в SharePoint бързо стартиране

Аз исках да добавите връзка към бърз хвърлям навигация онзи ден и SharePoint ми каза:

image

Чист текст версия на която е:

Гарантира, че URL Адресът е валиден и започва с или е валиден знак (знак за номер (#) или наклонена черта (/)) или валиден поддържа протокол (за пример, ' http://’, "https://’, "файл://’, "ftp://’, "mailto:’, "новини:’).

"Blech и шарка!Аз казах:.

A workaround към това е да използвате JavaScript, за да намерите линк, известен в бързо стартиране и промените му поведението.

За да проверите това, Добавяне на нова връзка към вашия тест сайт thusly:

image

Аз бях jQuery. Да го решим, Махни някои JavaScript и jQuery върху страницата с любимите си техника и с линия на код като този:

 

$(документ).готов( функция () {

    $("а:съдържа("Тест URL подмяна")").щракнете върху(функция () { предупреждение("промяна щракване поведение!"); връщане фалшиви;});

});

И чичо Боб.

Избора на jQuery намира всеки <а> етикет, който е "Тест URL подмяна" в името си. Вие може да искате да намерите-мелодия, която в зависимост от вашата връзка и такива.

Кликнете(функция() отменя каквото SharePoint би направил, когато потребителят кликне. Се уверете, че сте "върне false" или пък ще направи нещата си и след това се опитайте да href нещо твърде, което почти сигурно не е вашата цел.

Това е направено и изследването в онлайн среда на SharePoint, но трябва да работи добре в 2010 и по-рано твърде.

</край>

undefinedАбонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Бедният човек на кеширане в JavaScript

[TL;Д-р версия: използва бисквитки за да съхранява резултатите от async повиквания; сравнимостта на резултатите от минали async повиквания веднага и след това ги утвърждава след зареждане на страницата.]

Съм бил на работа в интранет сайта на SharePoint за клиент, което функции, наред с други неща, стилизирана допълнителна навигация, чието меню опции се управляват чрез редовни стар списък по избор.  Идеята е, че клиентът получава за контрол на сайта "тяхната" меню без чувства или са засегнати от глобалната навигационна, изведен от нея.

(има нещо невероятно подривни за добавянето на CEWP, който сочи към HTML файл, който зарежда някои CSS и JS да променят фундаментално почти всичко за поведението на даден сайт..., но това е за друг пост)

Кодът за тази доста проста:

  • Изчакайте страницата да завърши зареждането и асинхронно повикване към товаря горе меню елементи от списък с помощта на почивка или lists.asmx или каквото и
  • Използване на jQuery, динамично пренесат китка, ако <Li>снимки на вътре родител <UL> (Вижте Кристиан Pinder статия тук за опростено обяснение на това tecnnique)
  • Използвайте CSS за цялото форматиране
  • Печалба!

Възпалено място тук е, че всеки път, когато някой удари един от страници на сайта, този потребител уеб браузър се достига до получите елементи от списъка.  След като dev е пълна и изпитване е доказано неща, за да бъде стабилна и пълна, тази покана е необходимо повече от 99% на времето, тъй като менюто рядко промени.  Тя също има странни UI влияние, което е често срещани в този смел нов свят на хипер-ajaxy уеб сайтове – страницата се рендира и само тогава прави менюто.  Той е нервен и разсейващи по мое мнение.  И нервност. Така, кеширане. 

Аз промяна логиката thusly:

  • Потърсете "бисквитка" в браузъра, която съдържа менюто, тъй като аз последно го прочетете
    • Ако намерени, направи го веднага.  Не чакайте за страницата, за да завърши зареждането.  (Трябва да се уверете, че HTML е стратегическо място тук, но това не е трудно да се направи).
  • Изчакайте страницата да завърши зареждането и асинхронно повикване към товаря горе меню елементи от списък с помощта на почивка или lists.asmx или каквото и
  • Сравнете това, което получих срещу бисквитката
    • Ако тя съвпада, Стоп
    • В противен случай, използване на jQuery, динамично пренесат китка, ако <Li>снимки на в <UL>
  • Използвайте CSS за цялото форматиране
  • Печалба!

Някои от вас ще кажат, "Ей! Няма реален кеширане връщане тук, тъй като вие сте четене на менюто все пак всеки път.”  И вие сте прав-не съм дава сървъра всякакъв вид на почивка.  Но тъй като повикването е готино и се случва след първоначалните констатации на страницата HTML payload напълно прави, Той се "чувства" по-отзивчиви към потребителя.  Менюто прави доста много, тъй като страницата равенства.  Ако менюто се случва с промяната, потребителят е подложен на нервност водих на менюто, но само че едно време.

Има няколко начина да направите това кеширане по-ефективно и да помогне на сървъра в същото време:

  • В едно правило, че кеша на"бисквитка" е валиден за най-малко 24 часове или някои други срокове. Както дълъг както там е не издишвам бисквит, Използвайте бисквитка меню снимка и никога не хит на сървъра.

Ами..., това е всичко, което дойде на ум в момента :). 

Ако някой има някакви умни идеи тук бих искал да ги знаят.

И на последно място-тази техника може да се използва за други неща.  Този клиент страница има няколко неща, данни задвижване на различни страници, много от тях промяна сравнително рядко (като веднъж седмично или веднъж месечно).  Ако насочвате конкретни области на функционалност, Можете да дадете по-отзивчиви потребителски интерфейс чрез издърпване на съдържанието от местните бисквитка се съхранява и оказване незабавно.  Той се чувства по-бързо за потребителя дори ако не записвате сървъра всички цикли.  Вие може да запишете на сървъра цикли от вземане на решение за някои условията и предпоставките да обезсили кеш тази местна бисквитка.  Това е всички ситуационни и artsy неща и наистина най-забавно :). 

</край>

undefinedАбонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin