คลังเก็บหมวดหมู่: ส่วนที่เหลือ

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 ออก. หวังว่าคนพบนี้มีประโยชน์.

</สิ้นสุด>

วิธีการระบุคนเป็นขอบเขตการค้นหา / แหล่งเนื้อหาโดยใช้ SharePoint 2013 เหลือ API

มีเหตุผลทำงานร่วมกับ SharePoint 2013 ค้นหา API ผ่านเหลือเป็นครั้งแรก. อยากจะหาคน, เอกสารไม่. คีย์ที่เรียนที่นี่เป็นที่ที่คุณระบุแหล่งเนื้อหาผ่าน GUID ของ (หรืออย่างน้อยในกรณีนี้). ส่วนย่อยของโค้ดต่อไปนี้ jQuery แสดงวิธี:

    loadExpertsAsync: ฟังก์ชัน() {

        jQuery.support.cors = จริง;

        $.อาแจ็กซ์({
            url: นี้.CreateFullApiUrl() +
                "?querytext = 'พอร์ทัล'&รหัสแหล่งข้อมูล = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,ทักษะ,AboutMe,สนใจ,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            วิธีการ: "รับ",
            หัวข้อ: { "ยอมรับ": "แอพลิเคชัน/เจซัน; odata = verbose" },
            แคช: เท็จ,
            ประสบความสำเร็จ: ฟังก์ชัน (ผล) {

ในกรณีของฉัน, ฉันทำงาน API กับ SharePoint ออนไลน์. รับ GUID, ผมตามขั้นตอนเหล่านี้:

  1. เข้าศูนย์ผู้ดูแล SharePoint
  2. เลือก "ค้นหา" จากการนำทางซ้ายมือ
  3. เลือก "จัดการแหล่งผล"
  4. เลือก "ประชาชนผลลัพธ์"
  5. ดูที่ URL.

URL ของฉันดูเหมือน:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

พารามิเตอร์รหัสแหล่งข้อมูลเป็นที่ทำงานให้ฉัน.

(ผมเข้าใจว่า รหัสแหล่งข้อมูลจริงอาจจะเรียงลำดับของสิ่งถาวรกับ SP, แต่ฉันจะตรวจสอบอยู่เสมอ 🙂 ).

</สิ้นสุด>

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

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

เรียกเหลือ SharePoint ตัวอย่าง

นี่คือชุดของเรียกเหลืออย่างที่ฉันทำงาน และอาจช่วยให้คุณออกด้วย. เป็นของ 02/2014, there are two examples 🙂

  1. การอ้างอิงคอลัมน์ ด้วยช่องว่างในชื่อ
  2. อ้างอิงที่เลือกหลายคอลัมน์
  3. ทำการค้นหาคนผ่านเหลือ

 

ฉันจะเพิ่มไปเมื่อเวลาผ่าน.

ที่นี่มีหมึกบางประโยชน์ได้พบเช่น:

การอ้างอิงคอลัมน์ ด้วยช่องว่างในชื่อ

ฉันสร้างรายการกำหนดเอง มีคอลัมน์ชื่อ "ผู้เขียนบล็อก" (ช่องว่างระหว่างบล็อกและผู้เขียน).

$select การอ้างอิงคอลัมน์ได้:

image

เพียงแทนช่องว่าง ด้วย "_x0020_". เราเห็น _x0020_ ในตัวอย่างมากมายระหว่าง internets และส่วนที่เหลือจะไม่แตกต่าง.

ถ้าคุณไม่ทำ, คุณต้องได้รับข้อผิดพลาดนี้:

นิพจน์ “ผู้เขียนบล็อก” ไม่ถูกต้อง.

ง่ายพอ.

อ้างอิงค้นหาเลือกหลายคอลัมน์

ตั้งค่า:

  1. สร้างรายการแบบกำหนดเองที่ชื่อประเภท.
  2. เพิ่มบางประเภท. เพิ่มประเภท thusly:image
  3. สร้างรายการกำหนดเองอื่นที่เรียกว่า MockBlog และเพิ่มประเภทเป็นรายการเลือกหลายคอลัมน์ (หรือไซต์คอลัมน์ถ้าเป็นวิธีหมุน).

เพิ่มสินค้าบางรายการของคุณ Mockblog และคุณ.

การใช้ jQuery เรียกสไตล์อาแจ็กซ์จะมีลักษณะเหมือนกับ:

serverUrl  = "/_api/เว็บ/รายการ/GetByTitle('MockBlog')/รายการ" +
             "?$เลือก =ชื่อเรื่อง,ประเภท/ชื่อเรื่อง,Blog_x0020_Author/ชื่อ เรื่อง" + 
             "&$ขยาย = Blog_x0020_Author,ประเภท";

เรากำลังบอก SharePoint "ให้ฉันชื่อเรื่องสำหรับทุกประเภท (ประเภท/ชื่อเรื่อง). รับค่าของจริง ชื่อเรื่อง โดย $ขยายing รายการประเภทนี้" (ฉันถอดความนิยมจะหลวมคงสวย, แต่นี้ว่าฉันกำลังตีความมัน).

ถ้าคุณกำลังทำนี้ผ่าน JavaScript และใช้พู้ทำเล่นเพื่อดูผลลัพธ์, คุณได้รับสิ่งนี้กลับ:

 

image

(ด้านบนเป็นวัตถุเจซัน)

ทำการค้นหาคนผ่านเหลือ

ฉัน blogged เรื่องนี้ต่างหาก. สำคัญคือการ ระบุพารามิเตอร์รหัสแหล่งข้อมูลที่มีค่าเป็น GUID ของคนในท้องถิ่นแหล่งเนื้อหา. (แหล่งเนื้อหาใช้เรียกขอบเขต และจะไม่ยากดังนั้นฉันโอ้ ของฉันเรียกขอบเขตสำหรับฉันทุกอย่าง!).

อ่านเพิ่มเติมเกี่ยวกับการได้ที่นี่: http://www.mstechblogs.com/paul/?p=10385

 

</สิ้นสุด>

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

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

ง่าย และรวดเร็ว: สร้างไซต์ SharePoint โดยใช้ส่วนที่เหลือ

มีมากมายของทรัพยากรสถานที่แสดงวิธีการทำเช่นนี้, แต่รอยเชื่อมโยงครอบคลุมไปที่, ดังนั้นที่นี่เรามี.

คุณสามารถสร้างไซต์ SharePoint โดยใช้ API เหลือ  นี่เป็นตัวอย่างที่อบทั้งหมด:

<!--
    SiteRequestForm.html: รวบรวมข้อมูล และสร้างไซต์สำหรับผู้ใช้.
-->

<ศูนย์>
<ตาราง>
    <tr>
        <td>ชื่อเว็บไซต์:</td>
        <td><ป้อนข้อมูล ชนิด= "ข้อความ" ชื่อ"SiteName =" รหัส"SiteName =" /></td>
    </tr>
    <tr>
        <td colspan= "2">
            <ป้อนข้อมูล ชนิด= "ส่ง" รหัส= "CreateSiteButton" ค่า= "สร้างเว็บไซต์" />
        </td>
    </tr>
</ตาราง>
</ศูนย์>

<สคริปต์ src="../Plugins/jquery-1.11.0.min.js"></สคริปต์>

<สคริปต์>
var CreateSiteLogicContainer = {

    createSiteData: {
            "พารามิเตอร์": {
                __metadata: { "ชนิด": "SP.WebInfoCreationInformation" },
                Url: "Paultest1",
                ชื่อเรื่อง: "Paultest1",
                คำอธิบาย: "ส่วนที่เหลือสร้างเว็บ โดยพอล!",
                ภาษา: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: เท็จ
            }
    },

    createSite: ฟังก์ชัน () {

        jQuery.support.cors = จริง;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").val();
        
        $.อาแจ็กซ์({
            url: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            วิธีการ: "ลงรายการบัญชี",

            หัวข้อ: {
                "ยอมรับ": "แอพลิเคชันเจซัน; odata = verbose",
                "ชนิดเนื้อหา": "แอพลิเคชันเจซัน;odata = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },

            ข้อมูล: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            ประสบความสำเร็จ: ฟังก์ชัน () { การแจ้งเตือน("ความสำเร็จ""); },
            ข้อผิดพลาด: ฟังก์ชัน () { การแจ้งเตือน("ข้อผิดพลาด"); }

        });
    },

    wireUpForm: ฟังก์ชัน () {
        $("#CreateSiteButton").คลิก(ฟังก์ชัน () {
            การแจ้งเตือน("จะลอง และสร้างเว็บไซต์");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</สคริปต์>

เมื่อประสบความสำเร็จ, คุณได้รับแพคเก็ตเจซันตอบเช่นนี้:

image

หลักความคิดของฉันและ learnings จากนี้รวม:

  • วิธีการนี้ใช้ jQuery  ในกรณีของฉัน, ไลบรารี jQuery อยู่ ".../ ปลั๊กอิน "  คุณต้องการเปลี่ยนแปลงที่ชี้ไปยังตำแหน่งของ JQ โปรด.
  • คุณสามารถคัดลอก และวางที่ส่วนย่อยของโค้ดทั้งหมดใน Web Part ตัวแก้ไขเนื้อหาบนหน้ากระดาษ และควรทำเพียงปรับ  คุณจะต้องเปลี่ยนแปลงจุดสิ้นสุดของการเรียก API และแน่ใจว่าคุณอ้างอิง JQ อย่างถูกต้อง.
  • URL เป็นปลายทางของ API  ในกรณีของฉัน, มันเป็นการสร้างไซต์ย่อยภายใต้ https://bigapplesharepoint.com
  • คุณไม่จำเป็นเพื่อให้เนื้อหามีความยาว. บางบทความบล็อกและ MSDN เอกสารหมายถึงการที่คุณทำ, แต่เกิดให้ฉันโดยอัตโนมัติ, ซึ่งผมถือว่าการจัดการ โดยการเรียก.ajax $เอง.
  • บรรทัดนี้เป็นสิ่งจำเป็นเพื่อหลีกเลี่ยงการตอบสนองที่ "ต้องห้าม": "X-RequestDigest": $("#__REQUESTDIGEST").val().  มีวิธีอื่นที่, แต่นี่คือสวยดี  ฉันได้สูญเสียการเชื่อมโยงกับบล็อกที่ให้ทางลัดนี้  H/T คุณ, blogger ลึกลับ!

โชคดีและความหวังนี้ช่วยให้คนออก.

</สิ้นสุด>

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

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

ง่าย และรวดเร็ว: SharePoint เหลือโทรคืนเท่านั้น 100 เรกคอร์ด

ฉันได้ทำงานบนเว็บไซต์หันสาธารณะสำหรับการปฏิบัติของฉัน SharePoint ที่นี่ใน นิวยอร์ก และใช้มากเรียก JavaScript และอื่น ๆ เพื่อแสดงเนื้อหา.

ในระหว่างการพัฒนา mainline, ฉันสร้างชุดข้อมูลขนาดเล็กมีเพียง 10 หรือดึงให้ แถวในรายการที่กำหนดเองและเรียกส่วนที่เหลือของฉันทั้งหมดจาก  เมื่อฉันชนอัพรายชื่อให้ข้อมูลการทดสอบคาดว่าจะเติบโตกี่ร้อยแถว, พบว่า ก็คือการตรง 100 แถวที่ส่งกลับจึงเรียกส่วนที่เหลือของฉัน.

นี้เป็นสิ่งง่ายมากให้อยู่  ในกรณีของฉัน (และผมเชื่อว่าส่วนใหญ่), เริ่มต้นเหลือเรียกการ SharePoint (และอาจ เป็นมาตรฐานอุตสาหกรรม?) เที่ยวกลับ 100 แถว  กลับเริ่มต้นมากกว่า, ใช้พารามิเตอร์ $top บนโทรศัพท์ของคุณ, เช่นใน:

รับ /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/รายการ?$เลือก = ID,ชื่อเรื่อง,ประเภท/ชื่อเรื่อง,Blog_x0020_Author/ชื่อ เรื่อง,DatePublished,BlogSummary&$ขยาย = Blog_x0020_Author,ประเภท&$กรอง =&$ด้านบน = 9999

ฉันเลือก 9999 ในกรณีนี้ ตั้งแต่ผมรู้ว่า growth-wise, ไม่มีมากกว่า 200 หรือเพื่อ เพิ่มแถวลงในรายการนี้ในปี  ถ้ามัน ungainly, เราสามารถนำบางเพลงถนน.

</สิ้นสุด>

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

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