javascript
  • sharepoint
  • sharepoint-online
  • sharepoint-api
  • 2015-11-06 67 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 });' –

    相关问题