Kategori Arşivleri: JavaScript

HTTP 406 SharePoint dinlenme bitiş noktaları karşı açısal $http.get kullanırken hata

Güncelleştirme: Marc reklam ndersson bu büyük parça-in haberdar etmek işaret etti.: http://blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-api-released/. Bu çok açıklayıcı oldu :).

Bu kadar kötü başlık bir blog yazısı olabilir! Her neyse.

Ben genellikle yapmak tüm-in benim prototipleme karşı bir O365 örneği. Benim kişisel örnek başka birini etkileyen hakkında endişeli olmaya gerek yok ben vardır. Bir kenara olarak – ne zaman bizim laptoplarda MOSS ile– sanal makineleri taşınan arayacağız SQL Server hatırlıyorum, IIS, Hyper-V vs karar verme. VMWare? Her neyse...

Bu ortamda açısal kullanarak bir uygulama geliştirmişti., diğer şeyler arasında, Bu:

$http.get(serverUrl)
.başarı(işlevi(veri, durumu, başlıkları, config) {

var getLinksResponse = veri;

getLinksResponse.value.forEach(işlevi(Result) {

// ve benzeri ve çok saçma

Bu sadece iyi iki farklı SharePoint çevrimiçi ortamlarda çalışıyordu. Ancak, Ne zaman benim meslektaşım Cloudshare örneğine taşıdık, o was getting bir HTTP 406 hata (Bu aldığım ilk kez neydi, Bu yüzden... yay, Sanırım). Biraz araştırma yaptım ve "Kabul ediyorum" başlık kapalı olduğunu fark ettim. SharePoint online ile gayet mutlu:

Kabul etmek: uygulama/json

Ama cloudshare örneği (prem üzerinde SP hangisi, sanal sunucuda barındırılan) Klasik istedim "odata = verbose" de eklendi:

Kabul etmek: uygulama/json;Odata = verbose

Bunu düzeltmek için, Bu başlığı eklendi:

config var = {başlıkları: {
'Kabul': ' uygulama/json;Odata = verbose'
}
};

$http.get(serverUrl,config)
.başarı(işlevi(veri, durumu, başlıkları, config) {

var getLinksResponse = veri;

getLinksResponse.value.forEach(işlevi(Result) {

// ve benzeri ve çok saçma

Bu var kurtulun 406, Ama aynı zamanda yanıt biçimi değişti. Daha fazla... ayrıntılı. (haha!) Daha fazla değişiklik gerekli ve nihai sonuç:

config var = {başlıkları: {
'Kabul': ' uygulama/json;Odata = verbose'
}
};

$http.get(serverUrl,config)
.başarı(işlevi(veri, durumu, başlıkları, config) {

var getLinksResponse = veri;

getLinksResponse.d.results.forEach(işlevi(Result) {

// ve benzeri ve çok saçma

Bu sadece içine açık bir 30 bizim için dakika sorun, Biz dışarı lucked. Umarım kimse bu yararlı bulur.

</sonunda>

Açısal içinde IE9 Bootstrap başarısız

Angular.js ile son uzun süre ve bana yaşam için oynuyorum, Benim açısal apps-e doğru denize indirmek içinde IE9 alınamadı.  Hepsi IE11 içinde iş para cezası ama IE9 sadece kaşlı ve benzer bit gösterir.

I aramak çevrede ve kimse onun sorun hakkında şikayet etmek-ebil'bulmak.  O amele para cezası içinde krom, IE11, IE9 değil.

Ben IE konsol bana bu hata veriyordu Aslında tarafından atılmış:

SEC7111: Res tarafından HTTPS güvenliğini tehlikeye://ieframe.dll/forbidframing.htm

Bu hata bana açısal downloading biraz problem ya da gerekli diğer kütüphaneler olduğunu düşünüyorum vardı.  Anlaşılan o ki, Bu sorun değildi..

Internets poking tarafından, Nihayet tümcecik aramak için gerekli "önyükleme" ve önyükleme başarısız gibi görünüyordu öğrendim.  Sonunda, dekore edilmiş benim sorunum oldu benim <HTML> ng-app özniteliği içeren etiketi, olarak:

<HTML ng-app "MatrixApp" =>

İyi, IE9 için işe yaramadı.  Bunun yerine, HTML'de kalan sarılmış <vücut> içinde bir DIV ve referanslar MatrixApp bu şekilde.

Sorun çözüldü.

Umarım bu kimse bazı keder kaydeder.

</sonunda>

Artan bilinci / JavaScript çerçeveler kabulü

Benim meslektaşım, Javed Ansari (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), o seviyor ya da en azından ile SharePoint ile kullanıyor altyapıları kısa özet blog mesaj yazdı: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery victor alanında görülmektedir, adeta, Yıllardır, Ama diğerleri daha yeni ve mücadele ederken stills sıralamak, Açısal gibi. (SPServices, Elbette, a hayat kurtarmak için yıl oldu ve sanırım olmaya devam edecektir).

İnsanlar ne kullanıyorsunuz? Onlar daha Microsoft'un takım üzerinde odaklanmıştır (CSOM / JSOM) ya da daha doğru açısal hareketli, Nakavt, Kor, vb?

Bu Microsoft olmayan çerçeveler doğru büyüyen bir önyargı var. MSFT şeyler daha sert ve çalışmak daha zor olduğunu düşünüyorum, Neredeyse kadar çok eski tip sunucu tarafında dev olarak öğrenme eğrisi gerektiren.

Buraya yorum yazmak veya altında Büyük elma SharePoint tartışmak istiyorsanız (Büyük elma-ecek-si olmak bir tartışma daha fazla olasılığı).

</sonunda>

SharePoint çabuk denize indirmek içinde göreli URL'ler ile can sıkıcı bir sorun üstesinden gelmek

Hızlı başlatma gezinti geçen gün bir bağlantı eklemek istedim ve SharePoint söyledi:

image

Saf metin sürümü:

URL geçerli ve geçersiz bir karakter ya da ile başlar emin olun (numara işareti (#) ya da eğik çizgi (/)) veya geçerli bir iletişim kuralını destekleyen (Örneğin, ' http://’, ' https://’, ' dosya://’, ' ftp://’, ' mailto:’, ' Haberler:’).

"Blech ve çiçeği!"Dedim.

Bu geçici bir çözüm bulmak bilinen bir bağlantı-e doğru çabuk denize indirmek içinde ve davranışını geçersiz kılmak için JavaScript kullanmaktır.

Bu test etmek için, thusly, testi sitenize yeni bir bağlantı eklemek:

image

JQuery kullanılan. Bunu çözmek için, biraz JavaScript ve jQuery favori tekniği kullanarak sayfaya ve bu kod satırını ile:

 

$(Belge).hazır( işlevi () {

    $("bir:içerir('Test URL değiştirme')").' ı tıklatın(işlevi () { Uyarı("Değiştirilen tıklayın davranış!"); geri dönmek yanlış;});

});

Amcan Bob.

JQuery seçimi bulur her <bir> adını "Test URL değiştirme" olan etiket. Sen-ebilmek istemek-bul-bağlı olarak, bağlantı ve bu tune için.

Devamı(işlevi() Ne zaman kullanıcı tıkırtı ne SharePoint yapardı geçersiz kılar. Ya da yanlış "geri" Bu şeyler yapmak ve href şey de denemek emin olun, hangi hedef neredeyse kesin değil mi.

Bu yapıldı ve bir SharePoint çevrimiçi ortamda test ama gerektiğini iyi iş 2010 ve daha önce de.

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

Zavallı adam, JavaScript önbelleğe alma'nın

[TL;DR sürüm: zaman uyumsuz arama sonuçlarını depolamak için tanımlama; Geçmiş zaman uyumsuz arama sonuçlarını hemen işlemek ve sonra onları sayfa yükleme sonra doğrulayın.]

SharePoint intranet sitesindeki bir müşteri için bu özellikleri çalıştım, diğer şeyler arasında, stilize bir ikincil gezinti menüsü seçeneklerini düzenli eski özel liste yönetilir.  Fikir istemci etkileyen veya onun tarafından koymak Genel gezinti tarafından etkilenen varlık olmadan "kendi" sitenin menü kontrol etmek alır.

(Bu temelde bir sitenin davranış hakkında hemen hemen her şeyi değiştirmek için bazı CSS ve JS yükler ama bu başka bir yazı için bir HTML dosyasına işaret eden bir CEWP ekleme konusunda son derece yıkıcı bir şey)

Bu basit kodu:

Sore spot burada olduğunu ne zaman kimse bir sitenin sayfaları hits, kullanıcının web tarayıcısı listeden öğeleri almak için dışarı ulaşıyor.  Tam ve test dev bir kez şeyler olduğu için stabil ve tam kanıtlamıştır, Buna gerek yok daha fazla 99% zamandan beri menü nadiren değişir.  Ayrıca bu cesur yeni dünya hiper-ajaxy web sitelerinin ortak bir garip UI etkiler vardır – sayfa oluşturur ve ancak o zaman menü hale geliyor.  Gergin ve rahatsız edici benim görüşüme göre.  Ve gergin. Yani, önbelleğe alma. 

Thusly mantığı modifiye:

  • Ben son okurken, menüyü içeren tarayıcı çerezde arayın
    • Eğer bulundu, Bunu hemen işleme.  Sayfa yükleme bitirmesini beklemek gerekmez.  (HTML burada stratejik olarak yerleştirilmiş emin olmanız gerekir, Ama bu kadar da zor değil).
  • Sayfanın yüklenmesini bitirmek ve bir zaman uyumsuz yük kadar dinlenme ya da lists.asmx kullanarak listeden menü öğeleri için arama yapmak bekleyin
  • Çerez karşı elimizdeki karşılaştırın
    • Eşleşiyorsa, DURDUR
    • Aksi takdirde, jQuery kullanarak, Eğer bir grup dinamik olarak doldurmak <Li>' ın içinde bir <ul>
  • Tüm biçimlendirme için CSS kullanma
  • Kar!

Bazılarınız söyleyeceksin, "hey! menü yine de okuduğunuz bu yana çok önbellekleme burada olmayacak her zaman.”  Ve haklısın-break herhangi bir sunucu vermiyorum.  Ama çağrı zaman uyumsuz ve sonra sayfayı ilk olur çünkü HTML yükü tam olarak işler, "kullanıcıya daha duyarlı hissediyorum".  Menü çok sayfa çizer olarak işler.  Eğer menü değiştirmek için, kullanıcı bir gergin yeniden çizmek menü için tabi tutulur, Ama sadece bir kere.

Bu önbelleğe alma daha verimli hale getirmek ve aynı zamanda sunucu yardım için bazı yolları vardır.:

  • "Tanımlama bilgisi önbelleği" için en az geçerli bir kural koymak 24 Saat veya diğer bir süre. Süresi dolan kurabiye yok sürece, Çerezin menü anlık kullanın ve asla sunucu hit.

Şu an aklıma gelen tek şey... :). 

Kimse burada akıllı bir fikrin varsa onları bilmek isterdim..

Ve son olarak – bu yöntem-ebilmek var olmak kullanılmış için diğer şeyler.  Bu istemcinin sayfa verilere şeylerin bir dizi çeşitli sayfalarda vardır., pek çoğu nispeten nadiren değiştirme (haftada bir veya ayda bir gibi).  İşlevselliği belirli alanları hedefliyorsanız, daha duyarlı bir kullanıcı Arabirimi yerel tanımlama bilgisi deposundan içerik çekme ve hemen işleme verebilir.  Sunucu herhangi bir devir kurtarmıyorsun bile daha hızlı kullanıcıya hissediyor.  Sen Can sunucu döngüsü bu yerel tanımlama bilgisi önbelleği geçersiz kılmak için bazı koşullar ve tetikleyiciler karar vererek kaydedin.  Tüm durumsal ve iddialı şeyler ve gerçekten en eğlenceli :). 

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin