Tag Archives: JavaScript

Rychlé a snadné: Vytvořit web služby SharePoint pomocí webové služby REST

Existuje mnoho zdrojů, kolem které ukazují, jak na to, ale nemohl jsem najít komplexní go na odkaz, tak jsme tady.

Můžete vytvořit web služby SharePoint pomocí REST API.  Zde je příklad, plně pečené:

<!--
    SiteRequestForm.html: Shromažďování informací a vytvořit web pro uživatele.
-->

<centrum>
<Tabulka>
    <TR>
        <TD>Název webu:</TD>
        <TD><vstup Typ= "text" Jméno= "SiteName" ID= "SiteName" /></TD>
    </TR>
    <TR>
        <TD ColSpan= "2">
            <vstup Typ= "Odeslat" ID= "CreateSiteButton" hodnota= "Vytvořit web" />
        </TD>
    </TR>
</Tabulka>
</centrum>

<skript src="../Plugins/jQuery-1.11.0.min.js"></skript>

<skript>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametry": {
                __metadata: { "typ": "SP.WebInfoCreationInformation" },
                Adresa URL: "Paultest1",
                Titul: "Paultest1",
                Popis: "odpočinek vytvořil web Paul!",
                Jazyk: 1033,
                Webovou šablonu: "sts",
                UseUniquePermissions: NEPRAVDA
            }
    },

    createSite: funkce () {

        jQuery.support.cors = pravda;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.AJAX({
            Adresa URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            Metoda: "POST",

            záhlaví: {
                "přijmout": "aplikace/json; OData = verbose",
                "content-type": "aplikace/json;OData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            údaje: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            úspěch: funkce () { Výstraha("úspěch"); },
            Chyba: funkce () { Výstraha("Chyba"); }

        });
    },

    wireUpForm: funkce () {
        $("#CreateSiteButton").klepněte na tlačítko(funkce () {
            Výstraha("Chystáte se pokusit se vytvořit web.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</skript>

Když se úspěšný, dostanete paket JSON odpověď takto:

image

Moje klíčové myšlenky a poznatky z tohoto zahrnují:

  • Tento přístup používá jQuery.  V mém případě, Moje knihovna jQuery se nachází v ".../ plugins. "  Budete chtít změnit, aby ukazoval na vaše oblíbené místo JQ.
  • Můžete kopírovat a vložit to celý fragment kódu do webové části Editor obsahu na stránce, a to by mělo fungovat dobře.  Budete chtít změnit koncový bod volání API a ujistěte se, že odkazujete JQ správně.
  • Adresa URL je relativní váš API koncového bodu.  V mém případě, je vytvářet podřízené weby pod https://bigapplesharepoint.com
  • Není nutné poskytovat obsah délka. Některé příspěvky blogu a MSDN dokument naznačuje, že, ale stalo se pro mě automaticky, což Předpokládám je zpracovávaná samotné volání .ajax $.
  • Tato linka je nutné vyhnout se "zakázaná" reakce: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Existují jiné způsoby, jak to udělat, ale je to docela hezký.  Ztratil jsem odkaz na blog, která poskytuje tento zástupce.  H/T na vás, tajemný blogger!

Hodně štěstí a doufám, že to pomůže někdo.

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Rychlé a jednoduché: SharePoint REST zavolat pouze výnosy 100 Záznamy

Pracoval jsem na protilehlé internetové stránky pro mého SharePoint praxi v New York a používá mnoho volání JavaScript a odpočinku pro zobrazování obsahu.

Během hlavního vývoje, Jsem jen vytvořit malé dataset s 10 nebo tak řádky do vlastního seznamu a ostatní telefony vytáhl odtud.  Kdysi jsem vrazil seznam má několik set řádků dat, testování na předpokládaný růst, Zjistil jsem, že jsem dostala přesně 100 řádky vrácené zpět na mé volání REST.

Jde velmi jednoduchou věc řešit.  V mém případě (a věřím, že ve většině případů), Výchozí hodnota REST volání do služby SharePoint (a možná i jako průmyslový standard?) návrat 100 řádky.  Chcete-li vrátit více, než je výchozí, pomocí parametru $top na vaše volání, stejně jako v:

ZÍSKAT /Insights Dev/_api/web/lists/GetByTitle("MockBlog")/položky?$Vyberte = ID,Titul,Kategorie/titul,Blog_x0020_Author/titul,DatePublished,BlogSummary&$expand = Blog_x0020_Author,Kategorie&$filtr =&$Top = 9999

Vybral jsem 9999 v tomto případě od té doby vím, že growth-wise, nebude existovat více než 200 nebo tak řádky přidány do tohoto seznamu za rok.  Pokud se stane nemotorný, Můžeme realizovat některé stránkování po silnici.

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Chudák je ukládání do mezipaměti v JavaScriptu

[TL;Dr. verze: používají soubory cookie k ukládání výsledků asynchronní volání; okamžitě vykreslovat výsledky minulých asynchronní volání a poté je ověřit po načtení stránky.]

Pracoval jsem na intranetovém webu SharePoint pro klienta, že funkce, mimo jiné, stylizované sekundární navigace, jejichž možnosti nabídky jsou spravovány prostřednictvím pravidelné staré vlastní seznam.  Myšlenkou je, že klient dostane k ovládání menu "jejich" stránek bez ovlivnění nebo ovlivnění globální navigační uhasit jím.

(je něco neuvěřitelně podvratné o přidání CEWP, který odkazuje na soubor HTML, který načítá některé CSS a JS zásadně změnit téměř vše o webu chování..., ale to je na jiné místo)

Kód pro tento docela jednoduchá:

Bolavé místo tady je, že pokaždé, když někdo udeří jedním z stránek webu, jeho webový prohlížeč je oslovit získat položky ze seznamu.  Jakmile dev je kompletní a testování prokázal věci být stabilní a úplné, Toto volání je zbytečné více než 99% času od menu se mění jen zřídka.  Má také zvláštní vliv UI, které je běžné v tomto odvážném novém světě hyper ajaxy webových stránek – stránka vykreslí a teprve potom menu vykreslit.  Je nervózní a rozptylující podle mého názoru.  A nervozita. Tak, ukládání do mezipaměti. 

Upravil jsem logiku thusly:

  • Vyhledejte soubor cookie v prohlížeči, který obsahuje nabídku, když jsem naposledy četl
    • Pokud nalezen, vykreslení to okamžitě.  Nečekej na stránce na dokončení načítání.  (Musíte se ujistit, že HTML je strategicky umístěn zde, ale to není těžké udělat).
  • Čekat na stránce dokončení načítání a asynchronní volání načítání menu položky ze seznamu pomocí REST nebo lists.asmx nebo co
  • Porovnejte, co mám proti souboru cookie
    • Odpovídá-li, Stop
    • Jinak, pomocí jQuery, dynamicky naplníte parta, pokud <li>je v <ul>
  • Veškeré formátování pomocí CSS
  • Zisk!

Někteří z vás se bude říkat, "Hej! neexistuje žádný skutečný mezipaměti děje protože čtete menu stejně každý jednotlivý čas.”  A máš pravdu – nedám na serveru jakýkoliv druh přestávky.  Ale protože volání asynchronní a se stane po stránce je první plně vykreslí HTML datové, to "cítí" lépe reagovat na uživatele.  Menu vykreslí docela jako stránky kreslí.  Pokud se změna stane menu, uživatel je vystaven nervózní re-kreslit menu, ale jen jednou.

Existuje několik způsobů, jak provést tuto mezipaměť efektivnější a pomohli server ve stejné době:

  • Zavést pravidlo, že "cookie cache" je platná pro minimálně 24 hodin, nebo nějaké jiné časového rámce. Tak dlouho, dokud neexistuje žádný cookie vypršela, pomocí souboru cookie menu snímek a nikdy neuhodil server.

Dobře..., to je vše, které přicházejí na mysl hned teď :). 

Pokud má někdo nějaké chytré nápady zde rád bych znát.

A konečně – tento postup lze použít pro jiné věci.  Tohoto klienta stránka má několik věcí, řízené daty na různých stránkách, Mnozí z nich mění poměrně zřídka (jako jednou za týden nebo jednou za měsíc).  Pokud cílíte na konkrétní oblasti funkcí, vstřícnější UI můžete dát obsah z úložiště místní soubor cookie a vykreslování okamžitě.  Připadá mi to rychleji k uživateli i v případě, že se neukládají na serveru žádné cykly.  Jste může rozhodování o některých podmínkách a spouště rušit platnost mezipaměti místní soubor cookie uložte cykly na server.  To je vše situační a diletantský věci a opravdu nejzábavnější :). 

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin