Danh mục lưu trữ: Dung JavaScript

HTTP 406 Lỗi khi sử dụng góc $http.get chống lại SharePoint còn lại điểm

Cập Nhật: Marc quảng cáo ndersson chỉ ra này mảnh lớn của thông tin: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Điều đó giải thích rất nhiều :).

Đó có thể là tên tồi tệ nhất của một bài đăng blog bao giờ! Anyhoo.

Tôi thường làm tất cả của tôi prototyping chống lại một thể hiện O365. Tôi có trường hợp cá nhân của tôi để tôi không cần phải lo lắng về ảnh hưởng đến bất cứ ai khác. Là một sang một bên-nhớ khi chúng tôi gọi mang xung quanh máy ảo trên máy tính xách tay của chúng tôi với RÊU-SQL Server, IIS, quyết định Hyper-V vs. VMWare? Anyhoo...

Tôi đã phát triển một ứng dụng bằng cách sử dụng góc trong môi trường này nào, trong số những thứ khác, Điều này:

$http.Get(serverUrl)
.thành công(chức năng(dữ liệu, tình trạng, tiêu đề, cấu hình) {

var getLinksResponse = dữ liệu;

getLinksResponse.value.forEach(chức năng(theResult) {

// và như vậy và như vậy tuyển

Điều này đã làm việc tốt trong hai khác nhau SharePoint môi trường trực tuyến. Tuy nhiên, Khi đồng nghiệp của tôi chuyển nó đến một trường hợp Cloudshare, ông đã nhận được một HTTP 406 lỗi (đó là lần đầu tiên tôi đã bao giờ nhận rằng một trong những, Vì vậy... yay, Tôi đoán). Chúng tôi đã làm một chút về nghiên cứu và nhận thấy rằng các tiêu đề "Chấp nhận" đã tắt. SharePoint trực tuyến là hoàn toàn hài lòng với:

Chấp nhận: ứng dụng/json

Nhưng trường hợp cloudshare (đó là SP trên prem, được tổ chức trong một máy chủ ảo) muốn cổ điển "odata = tiết" được thêm vào trong là tốt:

Chấp nhận: ứng dụng/json;oData = tiết

Để sửa chữa đó, chúng tôi thêm các tiêu đề như vậy:

var config = {tiêu đề: {
'Chấp nhận': ' ứng dụng/json;oData = tiết '
}
};

$http.Get(serverUrl,cấu hình)
.thành công(chức năng(dữ liệu, tình trạng, tiêu đề, cấu hình) {

var getLinksResponse = dữ liệu;

getLinksResponse.value.forEach(chức năng(theResult) {

// và như vậy và như vậy tuyển

Mà đã thoát khỏi các 406, nhưng nó cũng thay đổi định dạng của các phản ứng. Nó đã nhiều... tiết. (haha!) Nhiều thay đổi được yêu cầu và đây là kết quả cuối cùng:

var config = {tiêu đề: {
'Chấp nhận': ' ứng dụng/json;oData = tiết '
}
};

$http.Get(serverUrl,cấu hình)
.thành công(chức năng(dữ liệu, tình trạng, tiêu đề, cấu hình) {

var getLinksResponse = dữ liệu;

getLinksResponse.d.results.forEach(chức năng(theResult) {

// và như vậy và như vậy tuyển

Điều này chỉ biến thành một 30 Các vấn đề phút cho chúng tôi, Vì vậy chúng tôi lucked. Hy vọng rằng ai đó tìm thấy điều này hữu ích.

</kết thúc>

Góc không Bootstrap trong IE9

Tôi đã chơi xung quanh với Angular.js cho cuối cùng dài trong khi và cho cuộc sống của tôi, Tôi không thể nhận được ứng dụng góc của tôi để khởi động trong IE9.  Tất cả họ làm việc tốt trong IE11 nhưng IE9 sẽ chỉ hiển thị các niềng răng xoăn và tương tự như bit.

Tôi tìm kiếm xung quanh và không thể tìm thấy bất cứ ai phàn nàn về vấn đề của mình.  Nó hoạt động tốt trong Chrome, IE11, chỉ cần không IE9.

Tôi đã ném ra bởi thực tế rằng giao diện điều khiển IE đã đem lại cho tôi lỗi như thế này:

SEC7111: HTTPS bảo mật bị tổn hại bởi res://IEFRAME.dll/forbidframing.htm

Lỗi đó đã cho tôi suy nghĩ đã có một số vấn đề tải các góc hoặc các thư viện khác mà tôi cần thiết.  Vì nó biến ra, Điều này đã không vấn đề.

Bởi poking xung quanh thành phố internets, Tôi cuối cùng đã phát hiện ra rằng cụm từ mà tôi cần thiết để tìm kiếm cho "bootstrap" và rằng nó có vẻ như các bootstrapping thất bại.  Cuối cùng, vấn đề của tôi đã là rằng tôi đã trang trí của tôi <HTML> thẻ với các thuộc tính của ứng dụng, như trong:

<HTML ng-app = "MatrixApp">

Vâng, mà không làm việc cho IE9.  Thay vào đó, Tôi quấn tất cả phần còn lại của HTML trong các <cơ thể> bên trong một div và tài liệu tham khảo MatrixApp như vậy.

Giải quyết vấn đề.

Hy vọng rằng điều này tiết kiệm một người nào đó một số đau buồn.

</kết thúc>

Nâng cao nhận thức ngày càng tăng / Việc áp dụng các JavaScript framework

Đồng nghiệp của tôi, Javed Ansari (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), đã viết một bài ngắn tóm tắt blog trên ông thích hoặc ít đã sử dụng với với SharePoint: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery dường như là người chiến thắng trên các lĩnh vực, Vì vậy, để nói chuyện, trong năm nay, nhưng những người khác thêm mới và ảnh tĩnh loại chiến đấu với nó, như mô men. (SPServices, Tất nhiên, có là một cuộc sống tiết kiệm trong nhiều năm qua và sẽ tiếp tục vì vậy tôi nghĩ rằng).

Người sử dụng những gì? Họ được tập trung hơn vào dây chuyền của Microsoft (CSOM / JSOM) hoặc di chuyển hơn đến góc, Loại trực tiếp, Ember, vv?

Tôi có một xu hướng ngày càng tăng đối với các khuôn khổ không phải của Microsoft. Tôi nghĩ rằng những thứ MSFT là khó khăn hơn và khó khăn hơn để làm việc với, yêu cầu gần như là nhiều đường cong học tập là kiểu cũ phía máy chủ dev.

Gửi bình luận ở đây hoặc qua tại Big Apple SharePoint Nếu bạn muốn thảo luận (Quả táo lớn sẽ có khả năng thêm một cuộc thảo luận tốt).

</kết thúc>

Khắc phục các vấn đề khó chịu với URL tương đối trong SharePoint Quick Launch

Tôi muốn thêm một liên kết để chuyển hướng nhanh chóng khởi chạy ngày khác và SharePoint nói với tôi:

image

Phiên bản thuần văn bản đó là:

Đảm bảo rằng URL hợp lệ và bắt đầu với một nhân vật hợp lệ (một dấu hiệu số (#) hoặc dấu gạch chéo phía trước (/)) hoặc một giao thức được hỗ trợ hợp lệ (Ví dụ, ' http://’, ' https://’, ' tập tin://’, ' ftp://’, ' mailto:’, ' tin tức:’).

"Blech và thủy!"Tôi đã nói.

Giải pháp này là sử dụng JavaScript để tìm thấy một liên kết được biết đến trong khởi động nhanh chóng và thay thế chế độ của nó.

Để thử nghiệm này, Thêm một liên kết mới vào trang web thử nghiệm của bạn thusly:

image

Tôi đã sử dụng jQuery. Để giải quyết nó, nhận được một số JavaScript và jQuery lên trang bằng cách sử dụng kỹ thuật ưa thích của bạn và với một dòng mã như thế này:

 

$(tài liệu).sẵn sàng( chức năng () {

    $("một:chứa('Kiểm tra URL thay thế')").Nhấp vào(chức năng () { cảnh báo("nhấp vào thay đổi hành vi!"); trở lại sai;});

});

Và Bob của chú.

Bộ chọn jQuery tìm thấy mỗi <một> từ khóa có "Kiểm tra URL thay thế" trong tên của nó. Bạn có thể muốn tìm-giai điệu mà tùy thuộc vào liên kết của bạn và như vậy.

.click(chức năng() ghi đè lên bất cứ điều gì SharePoint đã có thể thực hiện khi người dùng nhấp vào. Đảm bảo rằng bạn trở lại"sai" hoặc người nào khác nó sẽ làm công cụ của bạn và sau đó cố gắng điều href quá, đó là gần như chắc chắn không phải là mục tiêu của bạn.

Điều này được thực hiện và thử nghiệm trong một môi trường trực tuyến SharePoint nhưng nên làm việc tốt trong 2010 và trước đó quá.

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Người nghèo của bộ nhớ đệm trong JavaScript

[TL;Phiên bản DR: sử dụng cookie để lưu trữ các kết quả của cuộc gọi async; Hiển thị các kết quả của quá khứ async cuộc gọi ngay lập tức và sau đó xác nhận họ sau khi tải trang.]

Tôi đã làm việc trên SharePoint intranet site cho một khách hàng tính năng đó, trong số những thứ khác, một hướng trung học cách điệu mà tùy chọn trình đơn được quản lý thông qua một danh sách tùy chỉnh cũ thường xuyên.  Ý tưởng là rằng khách hàng được để kiểm soát trình đơn "của họ" trang web mà không ảnh hưởng đến hoặc bị ảnh hưởng bởi việc chuyển hướng toàn cầu đặt của nó.

(đó là một cái gì đó vô cùng lật đổ về việc thêm một CEWP điểm vào một tập tin HTML mà tải một số CSS và JS để về cơ bản làm thay đổi gần như tất cả mọi thứ về hành vi của một trang web... nhưng đó là cho đăng bài khác)

Mã này khá đơn giản:

Ở đây tại chỗ đau là mà mỗi khi bất cứ ai chạm một trong các trang của trang web, trình duyệt web của người dùng đó đến để có được khoản mục khỏi danh sách.  Một khi dev được hoàn tất và thử nghiệm đã chứng minh những điều cần được ổn định và đầy đủ, cuộc gọi này là không cần thiết hơn 99% thời gian từ trình đơn hiếm khi thay đổi.  Nó cũng có một ảnh hưởng đến giao diện người dùng lạ mà là phổ biến trong thế giới mới dũng cảm này của các trang web siêu ajaxy-Hiển thị hình ảnh trang và trình đơn đưa ra chỉ sau đó.  Nó là hốt hoảng kinh hai và mất tập trung trong quan điểm của tôi.  Và hốt hoảng kinh hai. Vì vậy, bộ nhớ đệm. 

Tôi đổi logic thusly:

  • Tìm kiếm một cookie trong trình duyệt có chứa trình đơn như tôi cuối đọc nó
    • Nếu tìm thấy, khiến nó ngay lập tức.  Đừng chờ đợi cho trang để hoàn tất tải.  (Bạn cần phải đảm bảo rằng HTML của bạn chiến lược được đặt ở đây, nhưng nó không phải là khó khăn để làm).
  • Chờ đợi cho trang để hoàn tất tải và làm cho một async gọi để tải lên mục trình đơn từ một danh sách bằng cách sử dụng phần còn lại hoặc lists.asmx hoặc bất cứ điều gì
  • So sánh những gì tôi nhận chống lại cookie
    • Nếu nó phù hợp với, Dừng
    • Nếu không, bằng cách sử dụng jQuery, tự động điền một bó nếu <Li>của trong một <ul>
  • Sử dụng CSS để làm tất cả các định dạng
  • Lợi nhuận!

Một số bạn sẽ nói, "hey! có là không có xảy ra bộ nhớ đệm thực sự ở đây kể từ khi bạn đang đọc menu dù sao mỗi lần duy nhất.”  Và bạn nói đúng-tôi không cho các máy chủ bất kỳ hình thức nào của phá vỡ.  Nhưng vì cuộc gọi async và sẽ xảy ra sau khi trang đầu tiên tải trọng chiến đấu HTML đầy đủ ám, "thật" đáp ứng tốt hơn cho người dùng.  Menu ám khá nhiều càng tốt trang thu hút.  Nếu trình đơn sẽ xảy ra với sự thay đổi, người sử dụng phải chịu sự một hốt hoảng kinh hai tái vẽ của menu, nhưng chỉ một lần.

Có một số cách để làm cho bộ nhớ đệm này hiệu quả hơn và giúp đỡ các máy chủ cùng một lúc:

  • Đặt trong một quy tắc rằng bộ nhớ cache cookie"" có hiệu lực tối thiểu 24 giờ hoặc một số khung thời gian khác. Miễn là có không có cookie hết hạn, sử dụng các cookie của menu ảnh chụp và không bao giờ trúng các máy chủ.

Vâng... đó là tất cả những gì tôi suy nghĩ ngay bây giờ :). 

Nếu bất cứ ai có bất cứ ý tưởng thông minh ở đây tôi rất muốn biết họ.

Và cuối cùng-kỹ thuật này có thể được sử dụng cho các công cụ khác.  Điều này khách hàng trang có một số điều hướng dữ liệu trên nhiều trang, nhiều người trong số họ thay đổi tương đối hiếm khi (giống như một lần một tuần hoặc mỗi tháng một lần).  Nếu bạn nhắm mục tiêu các khu vực cụ thể của chức năng, bạn có thể cho một giao diện người dùng phản ứng nhanh hơn bằng cách kéo nội dung từ các cửa hàng địa phương cookie và rendering ngay lập tức.  Nó cảm thấy nhanh hơn để người sử dụng ngay cả khi bạn đang không cứu máy chủ bất kỳ chu kỳ.  Bạn có thể tiết kiệm các chu kỳ máy chủ bằng cách quyết định một số điều kiện và gây nên để làm mất hiệu lực bộ nhớ cache cookie địa phương này.  Đó là tất cả tình huống và artsy stuff và thực sự phần lớn vui :). 

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin