คลังเก็บหมวดหมู่: จาวาสคริปต์

HTTP 406 ข้อผิดพลาดเมื่อใช้ $http.get แองกูลาร์กับ SharePoint เหลือจุด

โปรแกรมปรับปรุง: Ndersson AD มาร์คชี้ให้เห็นชิ้นส่วนของข้อมูลนี้ดี: http://blogs.office.com/2014/08/13/json-light-support-rest-sharepoint-api-released/. ที่อธิบายมาก :).

ที่อาจเป็นเรื่องเลวร้ายที่สุดของบล็อกโพสต์เคย! Anyhoo.

โดยทั่วไปทำต้นแบบของฉันกับอินสแตนซ์ของ O365 ทั้งหมด. มีอินสแตนซ์ของฉันส่วนบุคคลเพื่อให้ไม่ต้องกังวลเกี่ยวกับผลกระทบต่อใคร. เป็นพังเพย – จำเมื่อเราเรียกมีรอบเครื่องเสมือนบนแล็ปท็อปของเรากับมอส – SQL Server, IIS, ไฮเปอร์-V เทียบกับการตัดสินใจ. VMWare? Anyhoo ...

ฉันได้พัฒนา app ใช้เชิงมุมในสภาพแวดล้อมนี้ไม่, ในสิ่งอื่น ๆ, นี้:

$http.get(serverUrl)
.ประสบความสำเร็จ(ฟังก์ชัน(ข้อมูล, สถานะ, หัวข้อ, การกำหนดค่า) {

var getLinksResponse =ข้อมูล;

getLinksResponse.value.forEach(ฟังก์ชัน(theResult) {

// และอื่น ๆ และอื่น ๆ froth

นี้ทำงานเพียงแค่ปรับในสองแตก SharePoint ออนไลน์. อย่างไรก็ตาม, เมื่อเพื่อนร่วมงานของฉันส่งมันไปที่อินสแตนซ์ Cloudshare, เขาได้รับการ HTTP 406 ข้อผิดพลาด (ซึ่งเป็นครั้งแรกที่เคยได้ที่หนึ่งหรือไม่, ดังนั้น...เย่, ฉันเดาเอา). เราได้บิตของการวิจัย และพบว่า หัวข้อ "ยอมรับ" ถูกปิด. SharePoint แบบออนไลน์ได้อย่างมีความสุขกับ:

ยอมรับ: แอพลิเคชัน/เจซัน

แต่อินสแตนซ์ cloudshare (ซึ่งเป็น SP ในเปรม, โฮสต์ในเซิร์ฟเวอร์เสมือน) ต้องคลาสสิค " odata = verbose " เพิ่มในเช่น:

ยอมรับ: แอพลิเคชัน/เจซัน;odata = verbose

การแก้ไขปัญหานั้น, เราได้เพิ่มหัวข้อเช่น:

กำหนดค่า var = {หัวข้อ: {
'ยอมรับ': ' แอพลิเคชัน/เจซัน;odata = verbose'
}
};

$http.get(serverUrl,การกำหนดค่า)
.ประสบความสำเร็จ(ฟังก์ชัน(ข้อมูล, สถานะ, หัวข้อ, การกำหนดค่า) {

var getLinksResponse =ข้อมูล;

getLinksResponse.value.forEach(ฟังก์ชัน(theResult) {

// และอื่น ๆ และอื่น ๆ froth

ที่ได้รับการกำจัด 406, แต่ยังเปลี่ยนแปลงรูปแบบของการตอบสนอง. ก็เพิ่มเติม... verbose. (ฮาฮา!) เปลี่ยนแปลงที่ถูกต้อง และนี่คือผลลัพธ์ขั้นสุดท้าย:

กำหนดค่า var = {หัวข้อ: {
'ยอมรับ': ' แอพลิเคชัน/เจซัน;odata = verbose'
}
};

$http.get(serverUrl,การกำหนดค่า)
.ประสบความสำเร็จ(ฟังก์ชัน(ข้อมูล, สถานะ, หัวข้อ, การกำหนดค่า) {

var getLinksResponse =ข้อมูล;

getLinksResponse.d.results.forEach(ฟังก์ชัน(theResult) {

// และอื่น ๆ และอื่น ๆ froth

นี้เปิดเข้าไปในตัว 30 ปัญหานาทีสำหรับเรา, ดังนั้น เรา lucked ออก. หวังว่าคนพบนี้มีประโยชน์.

</สิ้นสุด>

แองกูลาร์ไม่ Bootstrap ใน IE9

ฉันได้เล่นรอบกับ Angular.js สำหรับยาวขณะ และชีวิตของฉัน, ไม่ได้ของฉันปพลิเคชันแองกูลาร์เพื่อเปิดใน IE9  พวกเขาทั้งหมดทำงานได้ดีใน IE11 แต่ IE9 จะแสดงเพียงปีกและบิตเหมือนกัน.

ค้นหาสถาน และไม่พบใครก็ตามที่เกี่ยวกับปัญหาของเขา  มันทำงานได้ดีในโครเมี่ยม, IE11, IE9 ไม่.

ฉันถูกโยนออกจากความจริงที่ว่า คอนโซล IE ถูกให้ฉันข้อผิดพลาดนี้:

SEC7111: ความปลอดภัย HTTPS ถูกละเมิด โดยทรัพยากร://ieframe.dll/forbidframing.htm

ข้อผิดพลาดที่มีฉันคิดมีปัญหาดาวน์โหลดในแองกูลาร์หรือไลบรารีอื่น ๆ ที่ต้องการ  ตามที่ออกจาก, นี่ไม่ใช่ปัญหา.

โดย poking รอบ internets, ฉันก็พบว่า วลีที่ฉันจำเป็นต้องค้นหาคือ "เริ่มต้นระบบ" และที่เหมือน bootstrapping ที่ล้มเหลว  ในสุด, ปัญหาของฉันได้ว่า ฉันมีตกแต่งของฉัน <html> แท็ก ด้วยแอตทริบิวต์ ng app, เช่นใน:

<html ng app = "MatrixApp">

ดี, ที่ไม่ทำงานสำหรับ IE9  แทน, เมี่ยงเหลือทั้งหมดของ HTML ในการ <เนื้อความ> ภายในเป็น div และการอ้างอิง MatrixApp วิธี.

แก้ปัญหา.

หวังว่านี้ช่วยคนบางความเศร้าโศก.

</สิ้นสุด>

ความรู้เพิ่มขึ้น / ของ JavaScript กรอบ

เพื่อนร่วมงานของฉัน, รี Javed (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), เขียนโพสต์บล็อกสรุปย่อในกรอบที่เขาชอบ หรือที่ ได้ใช้กับกับ SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery ดูเหมือนว่า วิคเตอร์บนฟิลด์ได้, เพื่อที่จะพูด, ปีตอนนี้, แต่คนใหม่ และฟังก์ชั่นเรียงลำดับของการต่อสู้นั้น, เช่นเชิงมุม. (SPServices, แน่นอน, แล้วตัวรักษาชีวิตปี และจะยังคงเป็นดังคิด).

คนใช้อะไร? มีพวกเขาเน้นมากเครื่องมือของ Microsoft หรือไม่ (CSOM / JSOM) หรือย้ายขึ้นไปทางเชิงมุม, ชนะน็อกโดยเทคนิค, Ember, ฯลฯ?

มีความโน้มเอียงเพิ่มขึ้นไปทางกรอบเหล่านี้ไม่ใช่ของ Microsoft. ผมคิดว่า สิ่ง MSFT เป็นยาก และยากในการทำงานด้วย, ต้องเกือบมากที่สุดของเส้นโค้งการเรียนรู้เป็น dev ฝั่งเซิร์ฟเวอร์แบบเก่า.

ความคิดเห็นที่นี่ หรือไปที่ SharePoint บิ๊กแอปเปิ้ล ถ้าคุณต้องการพูดคุย (บิ๊กแอปเปิ้ลจะมีโอกาสมากกว่าการสนทนาที่ดี).

</สิ้นสุด>

เอาชนะปัญหาน่ารำคาญ ด้วย Url แบบย่อในเปิด SharePoint อย่างรวดเร็ว

อยากจะเพิ่มการเชื่อมโยงการนำเปิดใช้งานด่วนในวันอื่น ๆ และ SharePoint บอกฉัน:

image

รุ่นข้อความล้วนที่เป็น:

ให้แน่ใจว่า URL ถูกต้อง และเริ่มต้น ด้วยทั้งอักขระที่ถูกต้อง (เครื่องหมายเลข (#) หรือเครื่องหมายทับไปข้างหน้า (/)) หรือโพรโทคอลที่สนับสนุนถูกต้อง (ตัวอย่างเช่น, ' http://’, ' https://’, ' ไฟล์://’, ' ftp://’, ' mailto:’, ' ข่าว:’).

"Blech และ pox!"ผมพูด.

วิธีแก้ปัญหานี้คือการ ใช้ JavaScript เพื่อค้นหาการเชื่อมโยงรู้จักในการเปิดใช้งานด่วน และแทนลักษณะการทำงานของ.

การทดสอบนี้, เพิ่มการเชื่อมโยงใหม่ไซต์ทดสอบ thusly:

image

ใช้ jQuery. เมื่อต้องการแก้มัน, บาง JavaScript และ jQuery ไปหน้าโดยใช้เทคนิคของคุณชื่นชอบ และ มีบรรทัดของรหัสนี้:

 

$(เอกสาร).พร้อม( ฟังก์ชัน () {

    $("การ:ประกอบด้วย('ทดสอบ URL แทน')").คลิก(ฟังก์ชัน () { การแจ้งเตือน("คลิกเปลี่ยนลักษณะการทำงาน!"); เที่ยวกลับ เท็จ;});

});

และ คุณลุงบ๊อบ.

ค้นหาตัว jQuery ทุก <การ> แท็กที่มีชื่อ "ทดสอบ URL แทน". คุณอาจต้องการค้นหาเพลงที่เชื่อมโยงของคุณและเช่น.

.Click(ฟังก์ชัน() เพียง SharePoint จะทำเมื่อผู้ใช้คลิกแทน. ให้แน่ใจว่า คุณ "ส่งคืนเท็จ" หรือ อื่น ๆ จะทำสิ่งของ และลองสิ่ง href เกินไป, ที่ไม่ได้เกือบแน่นอนเป้าหมายของคุณ.

นี้เสร็จ และทดสอบใน SharePoint ออนไลน์แต่ควรทำงานที่ดีใน 2010 และเร็วเกินไป.

</สิ้นสุด>

undefinedสมัครสมาชิกไปยังบล็อกของฉัน.

ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin

คนดีของแคใน JavaScript

[TL;รุ่น DR: ใช้คุกกี้เพื่อเก็บผลลัพธ์ของการเรียกต่างเวลา; แสดงผลผ่านมาต่างเวลาเรียกทันที และตรวจสอบได้หลังจากโหลดหน้า]

ฉันได้ทำงานบนไซต์ SharePoint ของอินทราเน็ตสำหรับไคลเอนต์ซึ่ง, ในสิ่งอื่น ๆ, เป็นสุกใสรองนำตัวเลือกที่เมนูจัดการผ่านรายการที่กำหนดเองเก่าปกติ  ความคิดเป็นว่า ไคลเอนต์ได้รับการควบคุมเมนูของเว็บไซต์ "ของ" โดยไม่กระทบหรือรับผลกระทบจากการนำโลกดับโดย.

(มีทุกสิ่งอย่างเหลือเชื่อ subversive เกี่ยวกับการเพิ่ม CEWP ที่ชี้ไปยังแฟ้ม HTML ที่โหลด CSS และ JS บางพื้นฐานเปลี่ยนเกือบทุกอย่างเกี่ยวกับการทำงานของเว็บไซต์... แต่ที่ใช้สำหรับการลงรายการบัญชีอื่น)

รหัสสำหรับนี้ง่ายสวย:

  • รอหน้าเสร็จสิ้นการโหลด และทำต่างเวลาการเรียกโหลดรายการเมนูจากรายการโดยใช้ส่วนที่เหลือ หรือ lists.asmx หรืออะไรก็ตาม
  • ใช้ jQuery, ใส่พวงแบบไดนามิกหาก <li>ของภายในเป็นหลัก <ul> (ดูคริสเตียน Pinder บทที่นี่สำหรับคำอธิบายพี่ tecnnique นี้)
  • ใช้ CSS ในการทำทั้งหมดการจัดรูปแบบ
  • กำไร!

ที่นี่จุดเจ็บคือทุกครั้งที่คนฮิตหนึ่งหน้าของเว็บไซต์, เบราว์เซอร์ของผู้ใช้ได้ถึงจะได้รับสินค้าจากรายการ  เมื่อเดฟสมบูรณ์ และทดสอบ ได้พิสูจน์สิ่งที่มั่นคง และสมบูรณ์, สายนี้มีความจำเป็นมากกว่า 99% เวลาตั้งแต่เมนูไม่ค่อยเปลี่ยนแปลง  มีผล UI แปลกซึ่งมีทั่วไปในโลกใหม่นี้กล้าไฮเปอร์ ajaxy เว็บไซต์ – ทำหน้า และหลังจากนั้น ไม่เมนูแสดง  ภาพกระตุก และรบกวนในมุมมองของฉันได้  และภาพกระตุก. ดังนั้น, แค 

ฉันปรับเปลี่ยนแบบตรรกะ thusly:

  • หาคุกกี้ในเบราว์เซอร์ที่ประกอบด้วยเมนูล่าสุดอ่านว่า
    • ถ้าพบ, แสดงทันที  ไม่รอหน้าเสร็จสิ้นการโหลด  (คุณต้องแน่ใจว่าวาง HTML ของคุณเชิญที่นี่, แต่ไม่ยาก).
  • รอหน้าเสร็จสิ้นการโหลด และทำต่างเวลาการเรียกโหลดรายการเมนูจากรายการโดยใช้ส่วนที่เหลือ หรือ lists.asmx หรืออะไรก็ตาม
  • เปรียบเทียบสิ่งที่ผมมีกับใคร
    • ถ้ามันตรงกับ, หยุด
    • มิฉะนั้น, ใช้ jQuery, ใส่พวงแบบไดนามิกหาก <li>ของในตัว <ul>
  • ใช้ CSS ในการทำทั้งหมดการจัดรูปแบบ
  • กำไร!

บางท่านจะบอกว่า, "เฮ้! ไม่มีจะจริงแคที่นี่เนื่องจากคุณกำลังอ่านเมนูต่อไป ทีเดียว.”  และคุณขวา – ฉันกำลังไม่นำเซิร์ฟเวอร์ใด ๆ ที่ทำลาย  แต่เนื่องจากการโทรอยู่ต่างเวลา และเกิดขึ้นหลังจากหน้าของเริ่มต้น ส่วนของข้อมูลของ HTML เต็มสภาพ, "รู้สึก" มากกว่าตอบสนองต่อผู้ใช้  เมนูทำสวยมากวาดหน้า  ถ้าเมนูเกิดขึ้นกับการเปลี่ยนแปลง, ผู้ใช้จะต้องมีภาพกระตุกใหม่วาดของเมนู, แต่เท่าที่เวลาหนึ่ง.

มีบางวิธีจะทำให้การแคนี้มีประสิทธิภาพ และช่วยออกเซิร์ฟเวอร์ในเวลาเดียวกัน:

  • ใส่ในกฎที่ว่า "แคชคุกกี้" ถูกต้องอย่างน้อย 24 ชั่วโมงหรือเวลาอื่น ๆ. ตราบใดที่มีคุกกี้ไม่หมดอายุ, ใช้ snapshot ของเมนูของคุกกี้ และไม่เคยตีเซิร์ฟเวอร์.

ดี...ที่ทั้งหมดที่มาถึงใจขณะนี้ :). 

ถ้าใครมีความคิดฉลาดใด ๆ ที่นี่ ฉันจะรักรู้ว่าพวกเขา.

และสุดท้าย – สามารถใช้เทคนิคนี้สำหรับสิ่งอื่น ๆ  ไคลเอนต์นี้แล้วจำนวนข้อมูลขับเคลื่อนกิจกรรมต่าง ๆ หน้า, หลายของพวกเขาเปลี่ยนแปลงค่อนข้างบ่อย (เช่นสัปดาห์ละหนึ่งครั้งหรือเดือนละครั้ง).  ถ้าคุณกำหนดเป้าหมายพื้นที่เฉพาะของฟังก์ชัน, คุณสามารถให้ UI ที่ตอบสนองมากขึ้น โดยดึงเนื้อหาจากเก็บคุกกี้ในเครื่อง และแสดงผลทันที  มันรู้สึกเร็วต่อผู้ใช้แม้ว่าคุณกำลังไม่บันทึกเซิร์ฟเวอร์ใด ๆ รอบ  คุณ สามารถ บันทึกวงจรเซิร์ฟเวอร์ โดยการตัดสินใจในบางเงื่อนไขและทริกเกอร์จะทำให้แคภายในคุกกี้  นั่นคือในสถานการณ์ทั้งหมด และสิ่งที่แสนยาวนานและสนุกมากที่สุด :). 

</สิ้นสุด>

undefinedสมัครสมาชิกไปยังบล็อกของฉัน.

ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin