मासिक अभिलेख: जनवरी 2015

HTTP 406 SharePoint बाकी अंत अंक के खिलाफ कोणीय $http.get का उपयोग करते समय त्रुटि

अद्यतन: मार्क विज्ञापन ndersson जानकारी के इस महान टुकड़ा बाहर की ओर इशारा किया: http://blogs.office.com/2014/08/13/json-light-support-rest-sharepoint-api-released/. कि बहुत कुछ बताते हैं :).

कि एक ब्लॉग पोस्ट के सबसे खराब शीर्षक हो सकता है कभी! Anyhoo.

मैं आमतौर पर एक O365 इंस्टेंस के खिलाफ मेरी प्रोटोटाइप के सभी करते हैं. मैं मेरी व्यक्तिगत उदाहरण है इतना है कि मैं किसी और को प्रभावित करने के बारे में चिंता करने की जरूरत नहीं है. एक अलग रूप में-जब हम काई-के साथ हमारे लैपटॉप पर आभासी मशीनों के चारों ओर बढ़ाया कॉल SQL Server याद, IIS, हायपर-V बनाम तय करने. VMWare? Anyhoo...

मैं एक app Angular करता है इस वातावरण में का उपयोग कर विकसित किया था, अन्य बातों के अलावा, यह:

$http.get(serverUrl)
.सफलता(समारोह(डेटा, स्थिति, शीर्ष लेख, config) {

var getLinksResponse = डेटा;

getLinksResponse.value.forEach(समारोह(theResult) {

// और इतने पर और इतने फेन

यह बस ठीक दो विभिन्न SharePoint ऑनलाइन वातावरण में काम कर रहा था. हालांकि, जब मेरे सहयोगी यह एक Cloudshare इंस्टेंस के लिए रखी, वह हो रही थी एक HTTP 406 त्रुटि (जो पहली बार मैं कभी मिला है कि एक था, तो.. याय, मेरा अंदाज़ा है). हम अनुसंधान के एक सा था और देखा कि "स्वीकार" शीर्ष लेख बंद था. SharePoint ऑनलाइन के साथ पूरी तरह से खुश था:

स्वीकार करें: आवेदन/json

Cloudshare आवृत्ति है लेकिन (जो प्रेम पर सपा है, एक वर्चुअल सर्वर में मेजबानी की) क्लासिक चाहता था "odata वाचाल =" में रूप में अच्छी तरह से जोड़ा गया:

स्वीकार करें: आवेदन/json;odata वाचाल =

कि ठीक करने के लिए, हम इस तरह के रूप में हैडर जोड़ा:

var config = {शीर्ष लेख: {
'स्वीकार करें': ' आवेदन/json;odata वाचाल ='
}
};

$http.get(serverUrl,config)
.सफलता(समारोह(डेटा, स्थिति, शीर्ष लेख, config) {

var getLinksResponse = डेटा;

getLinksResponse.value.forEach(समारोह(theResult) {

// और इतने पर और इतने फेन

कि के छुटकारा मिल गया 406, लेकिन यह भी प्रतिक्रिया का स्वरूप बदल गया. इसे और अधिक था.. वाचाल. (haha!) अधिक परिवर्तन आवश्यक थे और यहाँ अंतिम परिणाम है:

var config = {शीर्ष लेख: {
'स्वीकार करें': ' आवेदन/json;odata वाचाल ='
}
};

$http.get(serverUrl,config)
.सफलता(समारोह(डेटा, स्थिति, शीर्ष लेख, config) {

var getLinksResponse = डेटा;

getLinksResponse.d.results.forEach(समारोह(theResult) {

// और इतने पर और इतने फेन

यह केवल में बदल गया एक 30 हमारे लिए मिनट समस्या, तो हम बाहर lucked. उम्मीद है कि किसी को यह उपयोगी पाता.

</अंत>

कैसे करें: एक ही पृष्ठ पर एकाधिक कोणीय SharePoint वेब पार्ट्स को सक्षम करें

इस ब्लॉग पोस्ट बताता है कि कैसे हो सकता है आप एकाधिक Angular.js आधारित SharePoint वेब पार्ट्स (किसी सामग्री संपादक वेब पार्ट के द्वारा संदर्भित) पर उसी पृष्ठ. मैं किसी सामग्री संपादक वेब पार्ट को बुला रहा हूँ (CEWP) कि जावास्क्रिप्ट Angular.js ढांचे के एक "कोणीय वेब भाग." का उपयोग कर बनाया का संदर्भ

कोणीय के बूटस्ट्रैप प्रक्रिया आसान सुपर है और बस के बारे में हर उदाहरण आप पाते हैं internets पर कुछ इस तरह चला जाता है:

<html एनजी-app 'myApp' =>

<blah /><blah /><blah />

</html>

यह टूट जाता है, फिर भी, यदि आप एक ही पृष्ठ पर एकाधिक कोणीय वेब पार्ट्स एकाधिक CEWP का प्रतिनिधित्व करने को सक्षम करने के लिए चाहते हैं. कोणीय ही स्वचालित रूप से पहली एनजी-app निर्देशक के खिलाफ यह ढूँढता bootstrap करेंगे – कम से कम कोणीय संस्करण के रूप में 1.3.6. समाधान बहुत आसान है-मैन्युअल रूप से आपके कोड इसके बजाय bootstrap. इसके बाद के संस्करण अब कुछ इस तरह से बदलता है:

<शरीर>
<घ
चतुर्थ id =”bootstrapHere” एनजी-नियंत्रक =”myController theController के रूप में”>
<blah /><blah /><blah />
</div>
</शरीर>

<स्क्रिप्ट src =”//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.js”></स्क्रिप्ट>

<स्क्रिप्ट>
angular.bootstrap(angular.element(document.getElementById(“bootstrapHere”)),['myApp']);
</स्क्रिप्ट>

मूल रूप से, एनजी-app पर तत्व करने के लिए अपने bootstrapping बजाय का उपयोग कर, आप किसी ID उस तत्व पर थप्पड़. तब, bootstrap का उपयोग करें() कोणीय पर विधि ही bootstrapping को नियंत्रित करने के लिए रन-टाइम की प्रक्रिया. मैं इस एक ही पृष्ठ पर तीन अलग अलग कोणीय वेब पार्ट्स के साथ परीक्षण किया है और यह एक आकर्षण काम करता है.

</अंत>

undefinedमेरे ब्लॉग के लिए सदस्यता लें.

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin