2013-02-18 35 views
0

无法通过具有访客特权的ECMA脚本将项目插入到SharePoint列表中。
我在我的网站的母版页中添加了<sharepoint:FormDigest>控件。
我能够通过系统帐户成功运行代码。
enter image description here 这里是我的代码:
通过ECMA脚本在Sharepoint列表中插入项目的访问被拒绝

try { 
     var context = new SP.ClientContext.get_current(); 
     id = "123"; 
     var nameOnly = "ABC"; 
     var lstFavouritePosts = context.get_web().get_lists().getByTitle('DEF'); 
     var itemCreateInfo = new SP.ListItemCreationInformation(); 
     this.newListItem = lstFavouritePosts.addItem(itemCreateInfo); 
     newListItem.set_item('Title', id); 
     newListItem.set_item('User', nameOnly); 
     newListItem.update(); 
     context.load(newListItem); 
     context.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
     return false; 
    } 
catch(msg) 
     { 
      alert(msg); 
     } 

function onQuerySucceeded() { 
      alert('ABC'); 
     return false; 
    } 
function onQueryFailed(sender, args) { 
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
    return false; 
} 

任何建议将不胜感激。

回答

0

我相信你需要给上下文的用户信息。这可能是拒绝请求的原因。

试试你的try块内改变代码:

var context = new SP.ClientContext.get_current(); 
this.website = context.get_web(); 
this.currentUser = website.get_currentUser(); 
context.load(currentUser); 
id = "123"; 
var nameOnly = "ABC"; 
var lstFavouritePosts = context.get_web().get_lists().getByTitle('DEF'); 
var itemCreateInfo = new SP.ListItemCreationInformation(); 
this.newListItem = lstFavouritePosts.addItem(itemCreateInfo); 
newListItem.set_item('Title', id); 
newListItem.set_item('User', nameOnly); 
newListItem.update(); 
context.load(newListItem); 
context.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
return false; 
+0

它不也行。 – 2013-02-18 12:58:41

+1

对不起,我刚刚看到你想添加项目作为访问者,所以我的建议不会工作。你的清单是否允许这样做?我会想象你需要设置权限,以允许客人添加项目 – 2013-02-18 14:41:22

+0

谢谢你可以给你暗示做到这一点? – 2013-02-19 05:04:54