2013-02-18 50 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