Kategoria: Archiwum: JavaScript

HTTP 406 Błąd przy użyciu kątowe $http.get przeciwko SharePoint pozostałych punktów końcowych

Aktualizacja: Marc AD ndersson wskazał ten wielki kawałek informacji: http://blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-released/. To wiele wyjaśnia :).

To może być najgorszym tytuł blogu nigdy! Anyhoo.

Zazwyczaj jak wszystkie moje prototypów przed wystąpienie O365. Mam mój osobisty wystąpienie, tak że nie trzeba się martwić o wpływających na nikogo innego. Tak na marginesie-pamiętam kiedy nazywamy prowadzona wokół maszyn wirtualnych na laptopy z mech – SQL Server, USŁUGI IIS, decydującym vs Hyper-V. VMWare? Anyhoo...

I rozwinął aplikacji za pomocą kątowa w tym środowisku, który robi, między innymi, to:

$http.get(serverUrl)
.sukces(Funkcja(dane, stan, nagłówki, config) {

var getLinksResponse = dane;

getLinksResponse.value.forEach(Funkcja(theResult) {

// i tak dalej i tak piany

To działa dobrze w dwóch różnych środowisk SharePoint. Jednakże, Kiedy mój kolega przeniesiony do wystąpienie Cloudshare, był już HTTP 406 błąd (który został po raz pierwszy kiedykolwiek dostał ten jeden, tak... yay, Tak myślę). Zrobiłem trochę badań i zauważyłem, że "Akceptuj" nagłówek był wyłączony. Usługi SharePoint online był całkowicie zadowolony z:

Zaakceptować: aplikacji/json

Ale cloudshare wystąpienie (czyli SP na prem, hostowane na serwerze wirtualnym) chciał classic "odata = verbose" dodaje się również w:

Zaakceptować: aplikacji/json;odata = verbose

Aby ustalić, że, Dodaliśmy nagłówka jako takie:

var config = {nagłówki: {
'Accept': "aplikacja/json;odata = verbose'
}
};

$http.get(serverUrl,config)
.sukces(Funkcja(dane, stan, nagłówki, config) {

var getLinksResponse = dane;

getLinksResponse.value.forEach(Funkcja(theResult) {

// i tak dalej i tak piany

Że dostał uwalniać od 406, ale to także zmieniony format odpowiedzi. To było więcej... pełne. (haha!) Zmiany były potrzebne i oto wynik końcowy:

var config = {nagłówki: {
'Accept': "aplikacja/json;odata = verbose'
}
};

$http.get(serverUrl,config)
.sukces(Funkcja(dane, stan, nagłówki, config) {

var getLinksResponse = dane;

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

// i tak dalej i tak piany

To tylko zwrócił się do 30 minut problem dla nas, więc mamy pecha. Mam nadzieję, że ktoś znajdzie to przydatne.

</koniec>

Kątowe zdoła Bootstrap w IE9

Grałam w okolicy: z Angular.js do ostatniego długo a i dla życia mnie, NIE można uzyskać mój kątowe aplikacji do uruchomienia w IE9.  Wszystkie one działają dobrze w IE11 ale IE9 tylko pokazać nawiasy klamrowe i podobne kawałki.

Szukałem wokół i nie mogłem znaleźć ktoś narzeka na jego problem.  To pracował dobrze w Chrome, IE11, po prostu nie IE9.

Został wyrzucony przez fakt, że konsola IE był dawanie mi błędy jak ten:

SEC7111: HTTPS bezpieczeństwo jest zagrożone przez res://Ieframe.dll/forbidframing.htm

Błąd ten miał mi do myślenia, że wystąpił jakiś problem pobierania skośnych lub innych bibliotek, które potrzebne.  Jak okazuje się, to nie problem.

Przez szturchanie okolice internets, Wreszcie okazało się, że potrzebne do wyszukiwania frazy "startowy" i że wydawało się, jak bootstrap było nie.  W końcu, moim problemem było to, że miał urządzone mój <HTML> tag z atrybutem ng-app, jak w:

<HTML ng-app = "MatrixApp">

Również, to nie działa dla IE9.  Zamiast tego, Zawinąłem reszta HTML w <organ> wewnątrz div i odwołania do MatrixApp w ten sposób.

Problem rozwiązany.

Mam nadzieję, że to ktoś oszczędza trochę żal.

</koniec>

Rosnąca świadomość / Przyjęcie ram JavaScript

Mój kolega, Javed Ansari (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), napisał krótkie podsumowanie blogu na RAM lubi lub przynajmniej używał z z programu SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery wydaje się być zwycięzcą na polu, tak mowic, już od lat, ale inni są bardziej nowe i uspokaja rodzaju walka to, jak kątowa. (SPServices, Oczywiście, był pewien życie ciułacz od lat i nadal będzie tak myślę).

Co to są ludzie za pomocą? Są one skoncentrowane bardziej na narzędzi firmy Microsoft (CSOM / JSOM) lub więcej ku kątowe w ruchu, Nokaut, Sprzeniewierzyć, itp?

Mam coraz uprzedzeń wobec tych ram nie Microsoft. Myślę, że rzeczy MSFT jest trudniejsze i trudniejsze do pracy z, wymagających prawie tyle krzywej uczenia się w starym stylu po stronie serwera dev.

Wysłać pocztą pewien komentarz tutaj lub na Big Apple SharePoint Jeśli chcesz dyskutować (Big Apple mają większe prawdopodobieństwo dobry dyskusji).

</koniec>

Pokonać przykry Problem z względne adresy URL w SharePoint Quick Launch

Chciałem, aby dodać link do szybkiego uruchamiania nawigacji drugi dzień i powiedział mi, SharePoint:

image

Czysty tekst wersji, że jest:

Zapewnienia, że adres jest prawidłowy i zaczyna się albo prawidłowych znaków (znak numeru (#) lub ukośnika (/)) lub ważnego obsługiwany protokół (na przykład, "http://’, ' https://’, "plik://’, "ftp://’, "mailto:’, "Aktualności:’).

"Blech i ospy!"Powiedziałem.

Pewien workaround wobec to jest znaleźć znane link w ten szybki wprowadzić na rynek i zmienić jego zachowanie za pomocą JavaScript.

Wobec test ten, dodać nowy link do witryny testu dobrze reprezentuje:

image

Używałem jQuery. Aby rozwiązać problem, dostać niektórzy JavaScript i jQuery na stronę za pomocą swojego ulubionego technika i z linii kodu jak to:

 

$(dokument).gotowe( Funkcja () {

    $("a:zawiera("Test wymiany URL")").Kliknij przycisk(Funkcja () { alarm("Kliknij zmienione zachowanie!"); Powrót FAŁSZ;});

});

I twój wujek Bob.

Selektor jQuery znajdzie co <a> znacznik, że ma "Test URL wymiany" w jego imieniu. Może chcesz znaleźć utwór, który w zależności od łącza i takie.

Kliknij(Funkcja() zastępuje cokolwiek SharePoint chcieliby zrobić po kliknięciu przez użytkownika. Upewnij się, że ci "return false" lub inny to zrobi swoje rzeczy i spróbuj coś href zbyt, który jest prawie na pewno nie twój cel.

To zostało zrobione i badania w środowisku SharePoint online ale powinna działać dobrze w 2010 a wcześniej też.

</koniec>

undefinedSubskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Biedny człowiek jest buforowanie w JavaScript

[TL;DR wersja: używa plików cookie do przechowywania wyników wywołania asynchroniczne; natychmiast uczynić wyniki ostatnich wywołania asynchroniczne i następnie potwierdzić je po ładowania strony.]

Pracuję w witrynie intranetowej SharePoint dla klienta, że funkcje, między innymi, stylizowane drugorzędowej nawigacji którego opcje menu są zarządzane przez regularne stary listy niestandardowe.  Chodzi o to, że klient dojdzie do sterowania menu "swojej" stronie bez wpływu lub są dotknięte nawigacji globalnej wprowadzone przez to.

(jest coś niezwykle wywrotowych o dodanie CEWP, który wskazuje plik HTML, który ładuje niektóre CSS i JS do fundamentalnie zmienić prawie wszystko o zachowanie strony... ale to na inny post)

Kod ten bardzo prosty:

  • Poczekaj na zakończenie załadunku i zrobić Asynchroniczne wywołanie załadować menu pozycja z listy za pomocą odpoczynku lub lists.asmx lub cokolwiek strony
  • Przy użyciu jQuery, dynamicznie wypełnić kilka, jeśli <Li>jest wewnątrz rodzica <UL> (Zobacz artykuł Christian Pinder tutaj proste wyjaśnienie tego tecnnique)
  • Czy wszystkie formatowania za pomocą CSS
  • Zysk!

Ból miejscu tutaj jest to, że za każdym razem ktoś uderza jednej ze stron witryny, przeglądarki sieci web użytkownika jest dotarcie do uzyskania pozycji z listy.  Po zakończeniu dev i badania okazał się rzeczy, aby być stabilne i kompletny, to wywołanie jest niepotrzebne więcej niż 99% czas od menu zmienia się rzadko.  Ono także ma fatalny wpływ UI, które jest powszechne w tym brave new world hiper ajaxy witryny sieci web-renderuje strony i dopiero wtedy czyni menu.  To jest roztrzęsiony i rozpraszać moim zdaniem.  I zdenerwowanie. Tak, buforowanie. 

I zmodyfikowano logikę wygląda następująco:

  • Poszukaj pliku cookie w przeglądarce, która zawiera menu, jak ostatnio ją przeczytać
    • Jeśli Znalezione, uczynić go natychmiast.  Nie czekaj na zakończenie ładowania strony.  (Musisz upewnić się, że twój HTML jest strategicznie umieszczone tutaj, ale to nie jest trudne do zrobienia).
  • Poczekaj na zakończenie załadunku i zrobić Asynchroniczne wywołanie załadować menu pozycja z listy za pomocą odpoczynku lub lists.asmx lub cokolwiek strony
  • Porównaj, co mam przeciwko cookie
    • Jeśli pasuje, PRZYSTANEK
    • W przeciwnym razie, przy użyciu jQuery, dynamicznie wypełnić kilka, jeśli <Li>jest w <UL>
  • Czy wszystkie formatowania za pomocą CSS
  • Zysk!

Niektórzy z was są gonna powiedzieć, "Hej! tu jest nie prawdziwy buforowania będzie tutaj skoro czytasz menu tak za każdym razem.”  I masz rację-nie jestem dając serwer wszelkiego rodzaju przerwy.  Ale ponieważ połączenie jest asynchroniczne i zdarza się po stronie początkowej ładunku HTML renderuje pełni, to "czuje się" bardziej dostosowane do użytkownika.  Menu renderuje dość podobnie jak strony rysuje.  Jeśli zmiana menu, użytkownik jest poddawane zdenerwowanie narysowany menu, ale tylko ten jeden raz.

Istnieje kilka sposobów, aby zrobić to buforowanie bardziej skuteczne i pomóc serwera w tym samym czasie:

  • Umieścić w regule, że buforze"cookie" jest ważny przez co najmniej 24 godzin lub jakieś inne ramy czasowe. Tak długo, jak jest nie skończony ciasteczka, Użyj pliku cookie menu migawka i nigdy nie uderzył serwer.

... Dobrze, że wszystkich, którzy przychodzą do głowy teraz :). 

Jeśli ktoś ma jakieś mądre pomysły tutaj chciałbym je poznać.

I wreszcie – Technika ta może być używany do innych rzeczy.  Strona to klient ma wiele rzeczy, opartych na danych na różnych stronach, wielu z nich zmienia stosunkowo rzadko (jak raz w tygodniu lub raz w miesiącu).  Jeśli cel określonych obszarów funkcjonalności, może dać bardziej elastyczne UI ciągnąc zawartość z magazynu lokalnego pliku cookie i renderowania natychmiast.  Czuje szybciej do użytkownika, nawet jeśli nie zapisujesz serwer żadnych cykli.  Możesz może Decydując się na pewne warunki i wyzwalaczy unieważnić ten cookie lokalnej pamięci podręcznej, należy zapisać cykli serwera.  To wszystko sytuacyjne i pretensjonalnymi rzeczy i naprawdę najbardziej zabawne :). 

</koniec>

undefinedSubskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin