【发布时间】:2013-06-16 02:36:27
【问题描述】:
我是 SharePoint 开发新手。我正在尝试使用 SharePoint Online 开发简单的 SharePoint 应用程序。我的网站集中有一个名为“产品”的列表。在我的应用程序中,我编写了以下代码来向该列表添加和删除项目
function addProduct(product) {
var executor;
executor = new SP.RequestExecutor(appwebUrl);
var url = appwebUrl +"/_api/SP.AppContextSite(@target)/web/lists/getbytitle('Products')/items/?@target='" + hostwebUrl+"'";
executor.executeAsync({
url: url,
method: "POST",
body: JSON.stringify({__metadata: { type: 'SP.Data.ProductsListItem' },
Title: product.ProductName(),
ProductId: product.ProductId(),
ProductName: product.ProductName(),
Price:product.Price()
}),
headers: {
"Accept": "application/json; odata=verbose",
"content-type": "application/json;odata=verbose",
},
success: successProductAddHandler,
error: errorProductAddHandler
});
}
function successProductAddHandler(data) {alert('added successfully') }
function errorProductAddHandler(data, errorCode, errorMessage) { alert('cannot perform action') }
function deleteProduct(product) {
var executor;
executor = new SP.RequestExecutor(appwebUrl);
var url=appwebUrl+"/_api/SP.AppContextSite(@target)/web/lists/getbytitle('Products')/items('" + product.ID() + "')/?@target='" + hostwebUrl + "'";
executor.executeAsync({
url: url,
method: "POST",
headers: {
"IF-MATCH": "*",
"X-HTTP-Method": "DELETE"
},
success: successProductAddHandler,
error: errorProductAddHandler
});`
当我调用addProduct 时,我收到了403 错误代码,
和400 调用deleteProduct 时的错误代码。
我能够获取列表项并显示。
我尝试添加X-RequestDigest": $("#__REQUESTDIGEST").val(),但没有成功
如果我在deleteProduct() 的请求标头中包含"Accept": "application/json; odata=verbose",并且当我调用deleteProduct 时,两个请求将发送到服务器
-
/sites/productsdev/productsapp/_api/contextinfo(获取摘要值) -
/sites/ProductsDev/ProductsApp/_api/SP.AppContextSite(@target)/web/lists/getbytitle('Products')/items(itemid)/?@target='mysitecollectionurl'(使用上述X-RequestDigest调用返回的摘要值)
【问题讨论】:
-
哦..得到了解决方案。在 AppManifest.xml 权限选项卡中,我只授予范围“网络”的读取权限。所以我只能获取请求,现在我将其更改为“完全控制”,完美运行。谢谢。
-
那是更新的代码吗?
-
那么这是否可以作为 SharePoint Online 2013 页面内的嵌入式代码块?
标签: rest sharepoint sharepoint-2013