Arsip Kategori: JavaScript

HTTP 406 Kesalahan saat menggunakan sudut $http.get terhadap SharePoint seluruh titik akhir

Update: Marc AD ndersson menunjukkan sepotong besar info: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-api-Released/. Itu menjelaskan banyak hal :).

Itu mungkin judul posting blog terburuk pernah! Anyhoo.

Saya biasanya melakukan semua saya prototyping terhadap O365 instance. Aku punya contoh pribadi saya sehingga saya tidak perlu khawatir tentang mempengaruhi orang lain. Sebagai samping-ingat saat kami panggilan dilakukan di sekitar mesin virtual pada laptop kami dengan Lumut-SQL Server, IIS, memutuskan vs Hyper-V. VMWare? Anyhoo...

Saya telah mengembangkan sebuah aplikasi yang menggunakan sudut dalam lingkungan ini yang melakukan, di antara hal lain, ini:

$http.Get(serverUrl)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(fungsi(theResult) {

// dan seterusnya dan jadi buih

Ini bekerja baik di dua berbeda SharePoint online lingkungan. Namun, Ketika rekan saya porting ke Cloudshare instance, Ia mendapatkan HTTP 406 kesalahan (yang adalah pertama kalinya saya pernah punya satu, Jadi... yay, Saya rasa). Kami melakukan sedikit riset dan melihat bahwa header "Menerima" adalah off. SharePoint online adalah sangat senang dengan:

Menerima: aplikasi json

Tetapi contoh cloudshare (yang merupakan SP pada prem, host di virtual server) ingin klasik "odata = verbose" ditambahkan dalam juga:

Menerima: aplikasi json;oData = verbose

Untuk memperbaikinya, Kami menambahkan header seperti:

var config = {header: {
'Menerima': ' aplikasi json;oData = verbose'
}
};

$http.Get(serverUrl,config)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(fungsi(theResult) {

// dan seterusnya dan jadi buih

Yang menyingkirkan 406, Tapi itu juga mengubah format respon. Itu lebih... verbose. (Haha!) Lebih banyak perubahan yang diperlukan dan di sini adalah hasil akhir:

var config = {header: {
'Menerima': ' aplikasi json;oData = verbose'
}
};

$http.Get(serverUrl,config)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

getLinksResponse.d.Results.forEach(fungsi(theResult) {

// dan seterusnya dan jadi buih

Ini hanya berubah menjadi 30 menit masalah bagi kita, Jadi kita beruntung. Mudah-mudahan seseorang menemukan ini berguna.

</akhir>

Sudut gagal untuk Bootstrap pada IE9

Aku sudah bermain-main dengan Angular.js terakhir lama sementara dan untuk kehidupan saya, Aku tidak bisa mendapatkan aplikasi saya sudut untuk memulai pada IE9.  Mereka semua bekerja dengan baik di IE11 tapi IE9 hanya akan menunjukkan kurung kurawal dan potongan-potongan serupa.

Aku mencari di sekitar dan tidak bisa menemukan orang mengeluh tentang masalah.  Itu bekerja dengan baik di Chrome, IE11, tidak hanya IE9.

Saya terlempar oleh kenyataan bahwa IE konsol ini memberi saya kesalahan seperti ini:

SEC7111: Keamanan HTTPS dikompromikan oleh res://ieframe.dll/forbidframing.htm

Kesalahan itu telah saya berpikir ada beberapa masalah dalam mendownload sudut atau Perpustakaan lain yang saya butuhkan.  Ternyata, ini bukanlah masalah.

Oleh mengaduk internets, Saya akhirnya menemukan bahwa frase yang saya perlu untuk mencari "bootstrap" dan bahwa sepertinya bootstrap gagal.  Di ujung, masalah saya adalah bahwa saya telah dihiasi saya <HTML> Tag dengan atribut ng-app, seperti dalam:

<HTML ng-app = "MatrixApp">

Yah, itu tidak bekerja untuk IE9.  Sebaliknya, Aku membungkus seluruh HTML di <bodyHTMLan >>< kuat > pesan yang kuat.</strong> </body> </html> "> di dalam sebuah div dan referensi MatrixApp seperti itu.

Masalah dipecahkan.

Mudah-mudahan ini menghemat seseorang beberapa kesedihan.

</akhir>

Meningkatnya kesadaran / Penggunaan kerangka JavaScript

Rekan saya, Javed Ansari (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), menulis posting blog ringkasan singkat pada kerangka dia suka atau setidaknya telah menggunakan dengan dengan SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery tampaknya telah pemenang di Lapangan, sehingga untuk berbicara, selama bertahun-tahun sekarang, tetapi yang lain lebih baru dan stills semacam memerangi itu, seperti sudut. (SPServices, Tentu saja, telah hidup hemat selama bertahun-tahun dan akan terus jadi saya pikir).

Apa orang-orang menggunakan? Apakah mereka lebih terfokus pada Microsoft perkakas (CSOM / JSOM) atau bergerak lebih ke arah sudut, Babak, Ember, dll?

Saya memiliki bias tumbuh kerangka non Microsoft ini. Saya pikir MSFT hal-hal yang sulit dan sulit untuk bekerja dengan, memerlukan hampir sama dari kurva belajar sebagai gaya lama sisi server dev.

Posting komentar di sini atau lebih di Big Apple SharePoint Jika Anda ingin membicarakan (Big Apple akan memiliki lebih banyak kemungkinan diskusi yang baik).

</akhir>

Mengatasi masalah yang mengganggu dengan URL relatif dalam peluncuran cepat SharePoint

Saya ingin menambahkan link ke navigasi peluncuran cepat hari yang lain dan SharePoint mengatakan:

image

Versi teks murni yang:

Memastikan bahwa URL yang valid dan dimulai dengan baik karakter yang valid (tanda nomor (#) atau miring (/)) atau yang valid didukung protokol (misalnya, ' http://’, ' https://’, ' file://’, ' ftp://’, ' mailto:’, ' Berita:’).

"Blech dan cacar!"Aku berkata.

Solusi ini adalah dengan menggunakan JavaScript untuk menemukan link dikenal dalam peluncuran cepat dan mengesampingkan perilaku.

Untuk menguji ini, menambahkan link baru ke situs tes thusly:

image

Saya menggunakan jQuery. Mengatasinya, mendapatkan beberapa JavaScript dan jQuery ke halaman menggunakan teknik favorit Anda dan dengan baris kode seperti ini:

 

$(dokumen).siap( fungsi () {

    $("a:berisi('Test penggantian URL')").Klik(fungsi () { peringatan("Klik mengubah perilaku!"); kembali palsu;});

});

Dan Bob paman Anda.

Pemilih jQuery menemukan setiap <a> Tag yang memiliki "URL pengujian penggantian" dalam namanya. Anda mungkin ingin menemukan-tune yang tergantung pada link dan seperti.

.Click(fungsi() mengabaikan apa pun SharePoint akan dilakukan ketika pengguna mengklik. Pastikan Anda "return false" atau yang lain itu akan melakukan barang-barang Anda dan kemudian mencoba untuk hal href yang terlalu, yang merupakan hampir pasti tidak tujuan Anda.

Ini dilakukan dan tes di lingkungan online SharePoint tetapi harus bekerja baik di 2010 dan sebelumnya terlalu.

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Orang miskin di Caching di JavaScript

[TL;DR versi: menggunakan cookies untuk menyimpan hasil async panggilan; membuat hasil masa lalu async panggilan segera dan kemudian memvalidasi mereka setelah beban halaman.]

Saya telah bekerja pada situs SharePoint intranet untuk klien yang fitur, di antara hal lain, navigasi sekunder yang bergaya pilihan menu yang dikelola melalui daftar kustom tua biasa.  Idenya adalah bahwa klien mendapatkan untuk mengontrol menu situs "mereka" tanpa mempengaruhi atau sedang dipengaruhi oleh navigasi global yang dikeluarkan oleh itu.

(ada sesuatu yang sangat subversif tentang menambahkan CEWP yang menunjuk ke sebuah file HTML yang memuat beberapa CSS dan JS untuk secara fundamental mengubah hampir segala sesuatu tentang perilaku situs... tapi itu untuk pos lain)

Kode untuk ini cukup sederhana:

Sini tempat sakit adalah bahwa setiap kali ada hits salah satu halaman situs, browser web pengguna yang menjangkau untuk mendapatkan item dari daftar.  Setelah dev lengkap dan pengujian telah membuktikan hal-hal yang stabil dan lengkap, panggilan ini tidak perlu lebih dari 99% waktu sejak menu jarang berubah.  Ini juga memiliki mempengaruhi UI aneh yang umum dalam ini dunia baru yang berani situs web hiper-ajaxy-halaman menulisnya dan hanya kemudian membuat menu.  Sangat gelisah dan mengganggu dalam pandangan saya.  Dan gelisah. Jadi, caching. 

Aku diubah logika thusly:

  • Mencari cookie di browser yang berisi menu aku terakhir membacanya
    • Jika ditemukan, membuat itu segera.  Jangan menunggu untuk halaman untuk selesai loading.  (Anda perlu memastikan bahwa HTML Anda ditempatkan secara strategis di sini, Tapi itu tidak sulit untuk dilakukan).
  • Menunggu halaman selesai loading dan membuat async panggilan untuk memuat menu item dari daftar menggunakan sisa atau lists.asmx atau apa pun
  • Membandingkan apa yang saya Dapatkan terhadap cookie
    • Jika cocok, Stop
    • Jika tidak, menggunakan jQuery, dinamis mengisi setumpuk jika <Li>di dalam <UL>
  • Gunakan CSS untuk melakukan semua format
  • Keuntungan!

Beberapa dari Anda akan mengatakan, "Hei! ada tidak ada nyata caching terjadi di sini karena Anda sedang membaca menu tetap setiap kali.”  Dan kau benar-aku tidak memberikan server jenis istirahat.  Namun karena panggilan async dan terjadi setelah halaman awal muatan HTML sepenuhnya menuliskan, ia "merasa" lebih responsif terhadap pengguna.  Menu menuliskan cukup banyak seperti halaman yang menarik.  Jika menu terjadi perubahan, pengguna terkena gelisah menggambar ulang menu, tetapi hanya satu kali.

Ada beberapa cara untuk membuat ini caching lebih efektif dan membantu keluar server pada saat yang sama:

  • Dimasukkan ke dalam aturan "cookie cache" itu berlaku untuk minimal 24 jam atau beberapa jangka waktu lain. Selama ada kuki tidak kedaluwarsa, menggunakan cookie menu snapshot dan tidak pernah memukul server.

Yah... itu semua yang datang ke pikiran sekarang :). 

Jika seseorang memiliki ide-ide cerdas di sini saya ingin tahu mereka.

Dan terakhir-teknik ini dapat digunakan untuk hal-hal lain.  Halaman ini klien memiliki sejumlah hal data-driven pada berbagai halaman, banyak dari mereka mengubah relatif jarang (seperti satu minggu sekali atau sebulan sekali).  Jika Anda menargetkan daerah tertentu dari fungsi, Anda dapat memberikan UI lebih responsif dengan konten menarik dari toko lokal cookie dan rendering segera.  Rasanya lebih cepat kepada pengguna bahkan jika Anda tidak menyelamatkan server setiap siklus.  Anda dapat Simpan siklus server oleh memutuskan pada beberapa kondisi dan memicu untuk membatalkan cache lokal cookie ini.  Itulah semua situasional dan barang-barang berseni dan benar-benar yang paling menyenangkan :). 

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin