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

HTTP 406 Ошибка при использовании угловых $http.get против SharePoint остальные конечные точки

Обновление: Марк AD ndersson указал этот большой кусок информации: HTTP://blogs.Office.com/2014/08/13/JSON-Light-Support-REST-SharePoint-API-Released/. Это объясняет много :).

Это может быть когда-нибудь худшее название блога! Anyhoo.

Обычно я все мои прототипирования против экземпляра O365. У меня есть мой личный экземпляр, так что я не придется беспокоиться о затрагивающих никому. Как в сторону – Помните, когда мы называем осуществляется вокруг виртуальных машин на наших ноутбуков с Мосс – SQL Server, IIS, решение Hyper-V vs. VMWare? Anyhoo...

Я разработал приложение с помощью угловых в этой среде, что делает, среди прочего, Это:

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

var getLinksResponse = данные;

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

// и так далее и так пены

Это отлично работает в двух различных средах SharePoint онлайн. Однако, Когда мой коллега перенес его в экземпляр Cloudshare, он становится HTTP 406 Ошибка (который был в первый раз, я когда-либо получил что один, так что... Ура, Наверное). Мы сделали несколько исследований и заметил, что заголовок «Принять» был выключен. SharePoint онлайн был совершенно счастлив с:

Примите: применение/json

Но cloudshare экземпляра (который является SP на Прем, виртуальный сервер) хотели классический «odata = verbose» также добавлен в:

Примите: применение/json;OData = подробный

Чтобы это исправить, Мы добавили заголовка как таковой:

var config = {заголовки: {
«Accept»: ' приложение/json;OData = verbose'
}
};

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

var getLinksResponse = данные;

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

// и так далее и так пены

Что избавился от 406, но он также изменил формат ответа. Это было больше... подробный. (Ха-ха!) Необходимы дополнительные изменения и вот окончательный результат:

var config = {заголовки: {
«Accept»: ' приложение/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

Эта ошибка была мне думать, что существует некоторые проблемы загрузки угловой или других библиотек, которые мне нужно.  Как выясняется, Это был не вопрос.

По ковыряться в интернетах, Я наконец узнал, что мне нужно для поиска фразы «загрузочный» и что казалось самозагрузка не удается.  В конце концов, Моя проблема в том, что я оформлен мой <HTML> Тег с атрибутом нг app, как и в:

<HTML нг 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) или больше к угловое перемещение, Нокаут, Эмбер, и т.д.?

У меня растет уклон в сторону этих рамок не Microsoft. Я думаю, что вещи MSFT все труднее и труднее работать с, требует почти столько же, сколько кривой обучения как старого стиля серверного dev.

Оставить комментарий здесь или более чем на Big Apple SharePoint Если вы хотите обсудить (Big Apple будет иметь больше вероятность хорошей дискуссии).

</конец>

Преодолеть раздражает проблема с относительные URL-адреса SharePoint быстрый запуск

Я хотел бы добавить ссылку на панель быстрого запуска навигации другой день и сказал мне, SharePoint:

image

Чистая текстовой версии, является:

Убедитесь, что URL-адрес является допустимым и начинается с любой допустимый символ (знак номера (#) или косой (/)) или действительный поддерживаемый протокол (Например, ' http://’, ' https://’, ' файл://’, ' ftp://’, ' mailto:’, ' Новости:’).

«Blech и оспа!«Я сказал.

Обходной путь для этого — использовать JavaScript, чтобы найти известный ссылку в области быстрого запуска и переопределить его поведение.

Проверить это, Добавьте новую ссылку на ваш сайт тест константы выглядит так:

image

Я использовал jQuery. Для ее решения, получите некоторые JavaScript и jQuery на страницу, с помощью вашей любимой техники и с строки кода, как это:

 

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

    $("в:содержит(«Тест замена URL-адрес»)").Нажмите кнопку(функция () { предупреждение("поведение изменения щелчка!"); возвращение ложь;});

});

И Боб ваш дядя.

JQuery селектор находит каждый <в> тег, который имеет «Проверить URL замену» в его названии. Вы можете найти tune, в зависимости от вашей ссылке и такие.

Добав(функция() переопределяет все SharePoint сделали бы если пользователь нажал кнопку. Убедитесь, что вы «возвращение ложных», или же он будет делать ваши вещи и затем попытаться href вещь слишком, Это почти наверняка не ваша цель.

Это было сделано и тестирования в среде SharePoint online, но должны работать хорошо в 2010 и раньше тоже.

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Бедный человек при кэшировании в JavaScript

[TL;Д-р версии: Используйте cookies для хранения результатов асинхронных вызовов; немедленно отображать результаты последних асинхронных вызовов, а затем проверить их после загрузки страницы.]

Я работаю на сайте интрасети SharePoint для клиента, что особенности, среди прочего, стилизованные вторичных навигации, чьи параметры меню управляются через регулярные старый пользовательский список.  Идея заключается в том, что клиент получает для управления меню «их» сайта не затрагивая или под воздействием глобальной навигации, потушить его.

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

Код для этой довольно простой:

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

Больное место здесь является то, что каждый раз, когда кто-нибудь хитов одной из страниц сайта, веб-браузер пользователя выходит для получения элементов из списка.  После того, как dev, является полной и тестирования доказал вещи, чтобы быть стабильной и полной, Этот вызов не требуется более чем 99% времени, так как меню редко меняется.  Она также имеет странно влияют на пользовательский интерфейс, который является общим в этом дивном новом мире гипер ajaxy веб-сайтов – страница отображает и только тогда меню визуализации.  Это нервный и отвлекает на мой взгляд.  И нервный. Таким образом, кэширование. 

Я изменил логику константы выглядит так:

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

Некоторые из вас собираетесь сказать, «Эй! Существует без реальных кэширования происходит здесь, так как вы читаете меню все равно Каждый раз.”  И вы правы-я не давая сервера любого вида отдыха.  Но поскольку вызов асинхронного и происходит после начальной страницы HTML полезной нагрузки полностью оказывает, Он «чувствует» более чутко для пользователя.  Меню предоставляет довольно много, как рисует страницы.  Если меню происходит с изменением, пользователь подвергается нервным повторно нарисуйте меню, но только что один раз.

Есть несколько способов сделать это кэширование более эффективной и в то же время помочь сервера:

  • В правиле, что «кэш cookie» действительна как минимум в 24 часов или некоторые другие сроки. Пока не истек файл cookie, Используйте снимок меню файла cookie и никогда не ударил сервера.

Ну..., вот и все, что приходит на ум прямо сейчас :). 

Если кто имеет какие-либо умные идеи здесь я бы хотел знать их.

И наконец – этот метод может использоваться для других вещей.  Этот клиент страница имеет ряд вещей с данными на различных страницах, Многие из них меняется относительно редко (как раз в неделю или раз в месяц).  Если вы имеете конкретные области функциональности, Вы можете дать более реагировать пользовательского интерфейса, потянув содержимое из хранилища локального файла cookie и рендеринга немедленно.  Он чувствует быстрее для пользователя, даже если вы не сохраняете сервере никаких циклов.  Вы можно Сохраните циклы сервера недействительным кэш локального файла cookie, решив на некоторых условий и триггеры.  Это все ситуационных и вычурные вещи и действительно самое веселое :). 

</конец>

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

Следуй за мной по щебетать на http://www.twitter.com/pagalvin