sharepoint rest api Add ListItem 报错
Recently, I was trying to create a list item using Rest API on Sharepoint 2013. I got the following error message
“error”:{
“code”:”-2130575251, Microsoft.SharePoint.SPException”,
“message”:{
“lang”:”en-US”,
“value”:”The security validation for this page is invalid and might be corrupted. Please use your web browser’s Back button to try your operation again.”
}
}
Solution:
I found the solution for the above issue, most likely this error occurs since form digest has been expired on the page. In that case you could acquire a new form digest value by making a POST request to /_api/contextinfo endpoint. I’ve implemented the helper method for retrieving form digest.
Example :
function getFormDigest(siteUrl) {
return $.ajax({
url: siteUrl + “/_api/contextinfo”,
method: “POST”,
headers: { “Accept”: “application/json; odata=verbose” }
});
}
function createListItem(siteUrl, listName, itemProperties) {
var itemType = getItemTypeForListName(listName);
itemProperties[“__metadata”] = { “type”: itemType };
return getFormDigest(siteUrl).then(function (data) {
return $.ajax({
url: siteUrl + “/_api/web/lists/getbytitle(‘” + listName + “‘)/items”,
type: “POST”,
processData: false,
contentType: “application/json;odata=verbose”,
data: JSON.stringify(itemProperties),
headers: {
“Accept”: “application/json;odata=verbose”,
“X-RequestDigest”: data.d.GetContextWebInformation.FormDigestValue
}
});
});
}
//Fetch metadata for list item
function getItemTypeForListName(name) {
return “SP.Data.” + name.charAt(0).toUpperCase() + name.split(” “).join(“”).slice(1) + “ListItem”;
}
//Create a list item
var itemProperties = {‘Title’: ‘Title 1’};
createListItem(_spPageContextInfo.webAbsoluteUrl, ‘Demo List’, itemProperties)
.done(function (data) {
console.log(‘Item has been added successfully’);
})
.fail(function (error) {
console.log(JSON.stringify(error));
});
Usage :
var itemProperties = {‘Title’: ‘Title 1’};
createListItem(_spPageContextInfo.webAbsoluteUrl, ‘Test List’, itemProperties);