Category Archives: 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)
.успіх(функція(дані, статус, заголовки, Config) {

VAR getLinksResponse = даних;

getLinksResponse.value.forEach(функція(theResult) {

// і так далі і так піни

Це працює лише штрафом у двох різних середовищах онлайн SharePoint. Однак, Коли, мій колега портовано на Cloudshare екземпляр, він отримував послугами HTTP 406 помилка (яка була в перший раз я коли-небудь отримав що один, так.. Яй, Я гадаю). Ми зробили кілька досліджень і зауважив, що заголовку «Прийняти» був відключений. SharePoint онлайн була абсолютно щаслива зі:

Прийняти: застосування/json

Але cloudshare екземпляр (яка містить SP прем, відбулася у віртуальному сервері) хотів класичний "odata = verbose" додані також:

Прийняти: застосування/json;odata = verbose

Щоб виправити, що, Ми додали заголовка таким чином:

VAR config = {заголовки: {
"Приймати": ' застосування/json;odata = verbose'
}
};

$HTTP.Get(serverUrl,Config)
.успіх(функція(дані, статус, заголовки, Config) {

VAR getLinksResponse = даних;

getLinksResponse.value.forEach(функція(theResult) {

// і так далі і так піни

Що позбулися на 406, але це також змінив формат відповідь. Це було більше.. verbose. (Ха-ха!) Більше змін були необхідні і ось кінцевий результат:

VAR config = {заголовки: {
"Приймати": ' застосування/json;odata = verbose'
}
};

$HTTP.Get(serverUrl,Config)
.успіх(функція(дані, статус, заголовки, Config) {

VAR getLinksResponse = даних;

getLinksResponse.d.results.forEach(функція(theResult) {

// і так далі і так піни

Це тільки перетворився на 30 хвилина проблема для нас, так ми пощастило. Ми сподіваємося хтось вважає, що це корисна.

</кінець>

Кутова не в змозі завантаженні IE9

Я грав в околицях з Angular.js за останні довгий час і для життя мене, Я не міг отримати мій кутових застосунки для запуску в IE9.  Всі вони сумісні з IE11, але IE9 б просто показати фігурними дужками а також аналогічні біти.

Я шукав навколо і не міг знайти будь скаржиться на свою проблему.  Він працював штрафу в Chrome, IE11, просто не IE9.

Я був кинутий в тому, що консоль IE давав мені помилки, як це:

SEC7111: HTTPS безпеки скомпрометовані res://ieframe.dll/forbidframing.htm

Цю помилку змусив мене думаючи, що є деякі проблеми завантаження кутовою або інших бібліотек, що мені потрібно.  Як виявилося, Це не було питання.

Оглянуто колупатися Інтернет, Я нарешті дізнався, що фраза, що мені потрібно, щоб шукати "bootstrap", і що здавалося, що початкова завантаження зазнали невдачі.  Врешті-решт, моя проблема в тому, що я мав прикрашені мій <HTML> тег з атрибутом ng-app, як і в:

<HTML ng-app = "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, Звичайно, була життя заставка роками і надалі буде так що я думаю).

Те, що все-таки користуються? Вони зосереджені більше на оснащення корпорації Майкрософт (CSOM / JSOM) або переміщення більше до кутової, Нокаут, Ембер, д?

У мене є зростаюча упередженість бік ці рамки корпорації Майкрософт. Я думаю, MSFT речі все важче і важче для роботи з, вимагаючи майже стільки, кривий навчання як старий стиль серверної dev.

Опублікувати коментар тут або на більш Big Apple SharePoint Якщо ви хочете, щоб обговорити (Big Apple буде мати більше ймовірність гарним обговорення).

</кінець>

Подолати дратує проблема з відносним URL-адреси в SharePoint швидкого запуску

Я хотів би додати посилання на швидкий запуск навігації днями і SharePoint сказав мені:

image

Це чисто текстової версії що:

Переконайтеся, що URL є дійсним і починається з або неприпустимий символ (знак номера (#) або скісна риска (/)) Чи дійсні підтримуваних протоколів (Наприклад, ' http://’, ' https://’, ' файлу://’, ' ftp://’, ' mailto:’, ' Новини:’).

"Блех і віспа!"Я сказав:.

Обхідний шлях для цього є використання JavaScript, щоб знайти відомої посилання в швидкий запуск і змінити свою поведінку.

Щоб перевірити це, додати нові посилання на ваш сайт тест константи виглядає:

image

Я використовував jQuery. Щоб вирішити цю проблему, отримати деякі JavaScript і jQuery фігуру на сторінку, використовуючи ваш улюблений техніки і лінія з таким кодом:

 

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

    $("на:містить(Випробувань URL заміна)").натисніть кнопку(функція () { оповіщення("змінені натисніть поведінка!"); повернення ХИБНІСТЬ;});

});

Боб, а твій дядько.

JQuery селектор знаходить кожен <на> тег, який має "Тест URL заміна" в його назві. Ви можете знайти, налаштувати, залежно від вашого посилання і такі.

На .click(функція() скасовує будь-який інший SharePoint зробив би, якщо користувач натиснув. Переконайтеся, що ви "повернутися помилковим", інакше це зробити ваш матеріал а потім спробувати href річ занадто, який майже напевно не є ваша мета.

Це було зроблено і випробування в онлайн-середовищі SharePoint, але повинні добре працювати в 2010 а раніше теж.

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Бідна людина в кешування в JavaScript

[TL;DR версії: використовує кукі для зберігання результатів async дзвінків; візуалізації результатів останніх async дзвінків негайно а потім підтвердити їх після завантаження сторінки.]

Я працюю на intranet-сайті SharePoint для клієнта цієї функції, серед іншого, стилізований другорядного меню, чиї параметри меню керування через регулярні старі настроюваним списком.  Ідея полягає в тому, що клієнт одержує управління меню "своїх" сайт без зачіпають або під впливом глобальної навігації, згасити його.

(Існує щось неймовірно підривних про додавання CEWP, що вказує на файл HTML, який завантажує деякі CSS і JS докорінно змінити характер майже все про поведінку сайту..., але це на іншій посаді)

Код для цього дуже проста:

  • Чекати сторінку для завантаження і зробити async, зателефонуйте завантажувати до пунктів меню зі списку за допомогою відпочинку або lists.asmx або будь-який інший
  • Використання jQuery, динамічно заповнення букет, якщо <Лі>у всередині батьків <ul> (у Піндер християнський статті тут спрощене пояснення цього tecnnique)
  • Робити все форматування за допомогою CSS
  • Прибуток!

Хворе місце тут в тому, що кожного разу, коли хтось потрапляє одним із сторінки сайту, Цей користувач веб-браузер простягає руку отримати елементи зі списку.  Після того, як dev є повним і тестування довела речей, щоб бути стабільною і повний, цей заклик не є необхідним більше, ніж 99% часу, оскільки у меню рідко змінюється.  До нього дивні афекту користувальницький інтерфейс, який є спільним в цьому прекрасному новому світі гіпер ajaxy веб-сайтів-сторінка надає, і тільки потім меню візуалізації.  Це нервовий і відволікає, на мій погляд.  І нервовий. Так, кешування. 

Я змінив логіка константи виглядає:

  • Знайдіть файл cookie у веб-переглядачі, що містить меню, як я останній раз читав його
    • Якщо знайдено, зробити його негайно.  Чи не чекайте, сторінки завантаження.  (Ви повинні переконатися, що ваш HTML стратегічно розташованих тут, але це не важко зробити).
  • Чекати сторінку для завантаження і зробити async, зателефонуйте завантажувати до пунктів меню зі списку за допомогою відпочинку або lists.asmx або будь-який інший
  • Порівняти те, що я отримав від печива
    • Якщо він відповідає, Зупинити
    • В іншому випадку, використання jQuery, динамічно заповнення букет, якщо <Лі>в у в <ul>
  • Робити все форматування за допомогою CSS
  • Прибуток!

Деякі з ви збираєтеся сказати, "Ей! немає не реальних кешування тут відбувається так, як ви читаєте меню все одно кожен раз, коли.”  І ви маєте рацію-я не даю сервер будь-якого роду перерву.  Але тому що дзвінок async і відбувається після того, як сторінку від початкового Деструктивна HTML повністю надає, вона відчуває "себе" більш гнучкою для користувача.  Меню надає досить стільки, скільки сторінку малює.  Якщо меню відбувається до зміни, користувач піддається нервовий повторно перемальовувати меню, але що один раз.

Є кілька шляхів, щоб зробити цей кешування більш ефективним і допомогти на сервері в той же час:

  • Покласти в правило "куки кеш" дійсна протягом мінімум 24 годин або деякі інші терміни. Оскільки немає жоден файл cookie не прострочений, за допомогою файлу cookie, меню знімок і ніколи не потрапляють на сервері.

Добре..., що все, що спадає на думку прямо зараз :). 

Якщо хто має будь-які розумні ідеї тут я б із задоволенням їх знаємо.

І нарешті-ця техніка може бути використана для інших речей.  Цей клієнт сторінка має ряд динамічної речей на різних сторінках, багато хто з них відносно рідко змінюється (як раз на тиждень або раз на місяць).  Якщо ви націлюєте конкретних областях функціональності, можна надати більш гнучкою для користувача Інтерфейсу, потягнувши змісту з магазину місцевих печива й наданням негайно.  Вона відчуває себе швидше користувачеві навіть, якщо ви не записуєте сервер будь-якої циклів.  Ви можна зберегти сервер циклів, ухвалення рішення про деякі умовах і тригерів спростовувати кеш локальних файлів cookie.  Це все ситуаційні і претензійною речі і дійсно найвеселіше :). 

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin