Tag Archives: JavaScript

Pantas dan Mudah: Cipta Laman REST SharePoint Menggunakan

Terdapat banyak sumber sekitar menunjukkan bahawa cara untuk melakukan ini, tetapi saya tidak dapat mencari pautan go ke komprehensif, Jadi di sini kita akan.

Anda boleh mencipta tapak SharePoint menggunakan API lain.  Berikut adalah satu contoh yang dimasak sepenuhnya:

<!--
    SiteRequestForm.html: Mengumpul maklumat dan mencipta Laman web untuk pengguna.
-->

<pusat>
<jadual>
    <tr>
        <td>Nama tapak:</td>
        <td><input Jenis= "teks" Nama= "SiteName" id= "SiteName" /></td>
    </tr>
    <tr>
        <td colspan= "2">
            <input Jenis= "serah" id= "CreateSiteButton" nilai= "Mewujudkan laman web ini" />
        </td>
    </tr>
</jadual>
</pusat>

<skrip JPP=".. /Plugins/jQuery-1.11.0.min.js"></skrip>

<skrip>
VAR CreateSiteLogicContainer = {

    createSiteData: {
            "parameter": {
                __metadata: { "jenis": "SP. WebInfoCreationInformation" },
                URL: "Paultest1",
                Title: "Paultest1",
                Penerangan: "rehat-dicipta web oleh Paul!",
                Bahasa: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: palsu
            }
    },

    createSite: fungsi () {

        jQuery.support.cors = benar;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").val();
        
        $.Ajax({
            url: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            kaedah: "POST",

            header: {
                "Menerima": "permohonan/json; odata = banyak cakap",
                "content-type": "permohonan/json;odata = banyak cakap",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },

            data: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            kejayaan: fungsi () { berjaga-jaga("kejayaan"); },
            kesilapan: fungsi () { berjaga-jaga("Ralat"); }

        });
    },

    wireUpForm: fungsi () {
        $("#CreateSiteButton").klik(fungsi () {
            berjaga-jaga("Kira-kira untuk mencuba dan mewujudkan laman web ini.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</skrip>

Apabila berjaya, anda akan mendapat satu paket JSON dalam jawapan seperti ini:

image

Utama pemikiran dan learnings daripada ini termasuk saya:

  • Pendekatan ini menggunakan jQuery.  Dalam kes saya,, Pustaka jQuery terletak di "... / plugin. "  Anda akan mahu ubah hakikat itu untuk menghala ke lokasi JQ kegemaran anda.
  • Anda boleh menyalin dan menampal cebisan itu turun ke bahagian Web Editor kandungan di halaman dan ia harus bekerja saja.  Anda akan mahu untuk mengubah titik tamat panggilan API dan pastikan anda rujukan JQ dengan betul.
  • URL adalah berbanding dengan titik tamat API anda.  Dalam kes saya,, Ia mewujudkan sub tapak di bawahnya https://bigapplesharepoint.com
  • Anda tidak perlu menyediakan kandungan-panjang. Beberapa posting blog dan MSDN dokumen membayangkan yang anda lakukan, tetapi berlaku untuk saya secara automatik, yang saya anggap sebagai dikendalikan oleh panggilan .ajax $ sendiri.
  • Talian ini diperlukan untuk mengelakkan jawapan "haram": "X-RequestDigest": $("#__REQUESTDIGEST").val().  Terdapat pelbagai cara untuk melakukannya, tetapi ini adalah cukup bagus.  Saya telah kehilangan link ke blog yang diberikan pintasan ini.  H/T kepada anda, blogger misteri!

Nasib baik dan harap ini membantu seseorang.

</akhir>

undefinedLanggan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Cepat mudah dan: SharePoint REST Call Pulangan Hanya 100 Rekod

Saya telah bekerja pada laman web awam menghadapi untuk SharePoint amalan saya di sini dalam New York dan ia menggunakan banyak panggilan JavaScript dan SELEBIHNYA untuk menunjukkan kandungan.

Semasa pembangunan tali tambahan gelung kekili, Saya mencipta dataset kecil dengan hanya 10 atau jadi baris dalam senarai tersuai dan panggilan rehat saya semua ditarik dari situ.  Pernah saya terserempak sehingga senarai untuk mempunyai beberapa ratus baris data untuk menguji jangkaan pertumbuhan, Saya mendapati bahawa saya mendapat betul-betul 100 baris yang kembali semula pada panggilan rehat saya.

Ini adalah satu perkara yang sangat mudah untuk alamat.  Dalam kes saya, (dan saya percaya dalam kebanyakan kes), panggilan lain lalai untuk SharePoint (dan mungkin sebagai satu standard industri?) kembali 100 baris.  Untuk kembali lebih daripada lalai, Gunakan $top parameter pada panggilan anda, seperti dalam:

MENDAPAT /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/barang-barang?$pilih = ID,Title,Kategori/tajuk,Blog_x0020_Author/tajuk,DatePublished,BlogSummary&$mengembangkan = Blog_x0020_Author,Kategori&$penapis =&$atas = 9999

Saya memilih 9999 dalam kes ini kerana saya tahu bahawa growth-wise, tidak akan lebih daripada 200 atau jadi baris ditambah ke senarai ini dalam setahun.  Jika ia menjadi ungainly, kita boleh melaksanakan penghalaman beberapa hujung jalan.

</akhir>

undefinedLanggan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Caching Man Poor dalam JavaScript

[TL;DR versi: menggunakan cookies untuk menyimpan keputusan panggilan async; menyebabkan keputusan lepas async panggilan dengan serta-merta dan kemudian mengesahkan mereka selepas Laman-load.]

Saya telah bekerja pada tapak SharePoint intranet untuk pelanggan yang mempunyai, antara lain, pelayaran sekunder stylized opsyen menu yang diuruskan melalui senarai tersuai lama tetap.  Ideanya adalah bahawa pelanggan mendapat untuk mengawal menu Laman "mereka" tanpa mempengaruhi atau dipengaruhi oleh navigation global yang menghulurkan olehnya.

(ada sesuatu yang sangat subversif tentang menambah CEWP yang menghala ke fail HTML yang memuatkan beberapa CSS dan JS pada asasnya mengubah hampir segala-galanya mengenai kelakuan tapak... tapi itu untuk jawatan lain)

Kod ini sederhana cantik:

Di sini tempat yang sakit adalah bahawa setiap kali sesiapa terkena salah satu muka surat Laman web ini, pelayar web pengguna itu mendekati untuk mendapatkan item dari senarai.  Sebaik sahaja dev adalah lengkap dan ujian telah terbukti semuanya menjadi stabil dan lengkap, panggilan ini adalah tidak perlu lebih daripada 99% masa kerana menu yang jarang berubah.  Ia juga telah mempengaruhi UI pelik yang biasa dalam dunia baru berani ini laman web hyper-ajaxy – membuat halaman dan barulah tidak menu menyebabkan.  Ia adalah jittery dan mengganggu dalam pandangan saya.  Dan jittery. Jadi, cache. 

Saya kali logik Ehwal:

  • Mencari kuki dalam penyemak imbas yang mengandungi menu seperti aku terakhir membaca ia
    • Jika didapati, menyebabkan ia dengan serta-merta.  Jangan tunggu untuk laman untuk memuatkan selesai.  (Anda perlu pastikan anda HTML strategik diletakkan di sini, tetapi ia tidak sukar untuk dilakukan).
  • Tunggu sehingga halaman selesai loading dan membuat async untuk hubungi untuk memuatkan semua item menu daripada senarai menggunakan rehat atau lists.asmx atau apa-apa
  • Bandingkan apa yang saya dapat menentang cookie
    • Jika ia sepadan, BERHENTI
    • Jika tidak, menggunakan jQuery, dinamik penduduk sekumpulan jika <li>di dalam sebuah <st>
  • Menggunakan CSS untuk melakukan semua format
  • Keuntungan!

Ada di antara kamu akan berkata, "Hei! Terdapat tiada nyata caching berlaku di sini kerana anda sedang membaca menu juga setiap kali."  Dan kau betul-betul-aku tidak memberikan pelayan mana-mana jenis cuti.  Tetapi kerana panggilan async dan berlaku selepas halaman yang awal HTML muatan penuh membuat, "rasanya" lebih responsif kepada pengguna.  Menu membuat agak banyak yang menarik di laman.  Jika menu yang berlaku kepada perubahan, pengguna adalah tertakluk kepada yang jittery semula menarik Menu, tetapi hanya itu satu-satu masa.

Terdapat beberapa cara untuk membuat cache ini lebih berkesan dan membantu pelayan pada masa yang sama:

  • Dimasukkan ke dalam peraturan bahawa "cookie cache" adalah sah untuk sekurang-kurangnya 24 jam atau beberapa tempoh lain. Selagi terdapat tidak ada cookie yang tamat tempoh, menggunakan cookie's menu petikan dan Jangan sekali-kali memukul pelayan.

Well... itu semua yang datang ke fikiran sekarang :). 

Jika sesiapa yang mempunyai sebarang idea yang bijak di sini saya ingin tahu mereka.

Dan akhir sekali – teknik ini boleh digunakan untuk hal-hal lain.  Laman pelanggan ini mempunyai beberapa perkara dipacu data pelbagai halaman, ramai di antara mereka menukar agak jarang (seperti seminggu sekali atau sebulan sekali).  Jika anda menyasarkan bidang-bidang tertentu fungsi, anda boleh memberi UI yang lebih responsif dengan menarik kandungan dari kedai kuih tempatan dan memberi serta-merta.  Rasanya lebih cepat kepada pengguna walaupun anda bukan sedang menyelamatkan pelayan kitaran mana-mana.  Anda boleh Simpan kitaran pelayan dengan memutuskan mengenai beberapa syarat dan pencetus untuk mentaksahkan cache tempatan kuih ini.  Itulah semua situasional dan barangan artsy dan benar-benar yang paling menyeronokkan :). 

</akhir>

undefinedLanggan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin