如果您的 CMS 是用 .NET 编写的,您可以使用客户端对象模型。您的代码将如下所示:
function _createListItem(listName, values, logProgress) {
var context = new SP.ClientContext();
var dfd = $.Deferred();
var list = context.get_web().get_lists().getByTitle(listName);
context.load(list);
var itmCI = new SP.ListItemCreationInformation();
this.itm = list.addItem(itmCI);
for (fieldName in values)
{
this.itm.set_item(fieldName, values[fieldName]);
}
this.itm.update();
context.load(this.itm);
context.executeQueryAsync(
function () {
dfd.resolve();
},
function (sender, args) {
dfd.reject(sender, args, "Error creating ListItem");
});
return dfd.promise();
}
如果您的 CMS 是用其他方式编写的,则可以使用 REST。代码看起来像这样:
function _createListItem(listName, values) {
var dfd = $.Deferred();
var baseUrl = SP.Utilities.UrlBuilder.urlCombine(
_spPageContextInfo.webServerRelativeUrl,
"_api/web/lists/");
baseUrl += "GetByTitle('" + listName + "')/items";
values["__metadata"] = { "type": "SP.Data." + listName + "ListItem" };
var itemData = JSON.stringify(values);
var headers = {
"accept": "application/json;odata=verbose",
"content-length": itemData.length,
"X-RequestDigest": $("#__REQUESTDIGEST").val()
}
var dfd = $.ajax({
url: encodeURI(baseUrl),
type: "POST",
contentType: "application/json;odata=verbose",
data: itemData,
headers: headers
});
return dfd.promise();
}
您需要调用 /ContextInfo 以获取 X-RequestDigest 值,因为您不在 SP-App 中。此外,此代码是用 JavaScript 编写的,因此您需要使用跨域库来处理跨域问题。如果您使用另一种语言进行 REST,代码将类似,您可以为 REST 调用指定凭据,而不必处理跨域问题。
如果您需要更多信息,请说明您使用的是哪种语言,以便我专注于此。
HTH。