javascript
  • sharepoint
  • sharepoint-online
  • sharepoint-api
  • 2015-11-06 75 views 1 likes 
    1

    我想通過JSOM和REST在另一個網站集中應用主題。 我得到一個404,該文件沒有找到。不要緊,如果我選擇另一個spcolor或spfont文件。結果仍然是一樣的。通過Javascript在SharePoint中applyTheme

    我在做什麼錯?

    var applyTheme = { 
    url: urlToSiteCollection + "/_api/web/applytheme(
    colorpaletteurl='/_catalogs/theme/15/palette007.spcolor', 
    fontschemeurl='_catalogs/theme/15/fontscheme007.spfont', 
    backgroundimageurl='/piclibrary/th.jpg', 
        sharegenerated=true)", 
               type: "POST", 
               headers: { 
                "Accept": "application/json;odata=verbose", 
                "X-RequestDigest": digest 
    
              }, 
              contentType: "application/json;odata=vebose", 
              success: function (applyThemeData) { 
               alert("Applyat theme"); 
              }, 
              error: function (ex) { 
               alert(JSON.stringify(ex)); 
              } 
             }; 
    $.ajax(applyTheme); 
    

    而且JSOM代碼:

    var clientContext = new SP.ClientContext(urlToSiteCollection); 
         var web = clientContext.get_web(); 
         var colorPaletteUrl = urlToSiteCollection + "/_catalogs/theme/15/palette011.spcolor"; 
         var fontSchemeUrl = urlToSiteCollection + "/_catalogs/theme/15/fontscheme002.spfont"; 
         var backgroundImageUrl = imageUrl; 
         var shareGenerated = true; 
    
         web.applyTheme(colorPaletteUrl, fontSchemeUrl, backgroundImageUrl, shareGenerated); 
         web.update(); 
    
         clientContext.executeQueryAsync(onApplyThemeSuccess, OnFailure); 
    

    回答

    1

    最有可能你收到此錯誤,因爲端點:

    http://<sitecollection>/<site>/_api/web/applyTheme(colorPaletteUrl,fontSchemeUrl,backgroundImageUrl,shareGenerated) 
    

    預計值colorPaletteUrlfontSchemeUrlbackgroundImageUrl參數被指定爲服務器相對URL,例如:/<site server relative url>/_catalogs/theme/15/palette007.spcolor

    的下面的例子適用於我

    var siteUrl = _spPageContextInfo.siteServerRelativeUrl; 
    var options = { 
        colorpaletteurl: _spPageContextInfo.siteServerRelativeUrl + '/_catalogs/theme/15/palette007.spcolor' 
    }; 
    
    
    applyTheme(siteUrl,options) 
        .done(function (result) { 
          console.log("Theme has been applied"); 
        }) 
        .fail(function (ex) { 
         console.log(JSON.stringify(ex)); 
        });  
    

    其中

    function applyTheme(siteUrl,parameters){ 
        var requestUrl = siteUrl + "/_api/web/applytheme("; 
        var paramUrls = []; 
        for(var p in parameters) { 
         paramUrls.push(p + "='" + options.colorpaletteurl + "'"); 
        }  
        requestUrl += paramUrls.join(',') + ")";  
        return $.ajax({url: requestUrl, 
            type: "POST", 
            headers: { 
            "Accept": "application/json;odata=verbose", 
            "X-RequestDigest": $('#__REQUESTDIGEST').val() 
            }, 
            contentType: "application/json;odata=vebose", 
        }); 
    } 
    
    +1

    它現在正在運行,瓦迪姆。謝謝! 我不明白爲什麼ajax函數不會進入成功函數和日誌。但是,嘿,它的工作原理是有效的! –

    0

    當您使用SP.ClientContext(url) url參數需要指向當前網站集內的網站一個新的上下文。 SharePoint JavaScript客戶端對象模型不支持跨不同網站集訪問。

    另一種方法是使用REST或SharePoint的其他Web服務訪問其他網站。

    +0

    那麼我試過這個原理。但我仍然獲得了404找不到文件: 我使用這個網址:https://sogetiumea-my.sharepoint.com/personal/simonagren_sogetiumea_onmicrosoft_com/_api ............ ' $ .ajax({url:http:// /_api/web /applytheme(colorpaletteurl='/_catalogs/theme/15/palette011.spcolor', fontschemeurl ='/ _ catalogs/theme/15/fontscheme007。 「 」, 標題:{「X-RequestDigest」:<表格摘要值>}, success:successHandler, error:errorHandler });' –

    相關問題