使用JavaScript创建SharePoint列表记录失败,请求代码错误排查
核心错误修正
你怀疑的GetListItemType函数确实存在语法错误,原代码中name.charAt(0).toUpperCase().name.slice(1)的写法完全错误——charAt(0).toUpperCase()返回的是单个大写字符,这个值并没有.name属性,导致生成的ItemType格式错误,API无法识别。
修正后的GetListItemType函数:
function GetListItemType(name){ return "SP.Data." + name.charAt(0).toUpperCase() + name.slice(1) + "ListItem"; }
其他需要检查的点
- jQuery依赖:确保页面已加载jQuery库,SharePoint默认页面可能未包含,需手动引入
- 表单元素ID匹配:确认输入框的ID确实是
txtSiteName和txtSiteDesc,和代码中的选择器完全一致 - 列表字段内部名称:
Site_Description必须是SharePoint列表字段的内部名称(不是显示名称),可通过列表设置→字段设置查看 - 请求摘要有效性:确认页面中存在
#__REQUESTDIGEST元素,自定义页面可能需要通过_spContextInfo手动获取请求摘要值
完整修正后的代码
var listname = "TableData"; $(document).ready(function(){ $("#btnSubmit").click(function(){ saveSubmitForm(); }); }); function saveSubmitForm(){ var itemType = GetListItemType(listname); var item = { "__metadata": {"type": itemType}, "Title": $("#txtSiteName").val(), "Site_Description": $("#txtSiteDesc").val() }; var requesturl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + listname + "')/items"; $.ajax({ url: requesturl, type: "POST", contentType: "application/json;odata=verbose", data: JSON.stringify(item), headers: { "Accept": "application/json;odata=verbose", "X-RequestDigest": $("#__REQUESTDIGEST").val() }, success: onSuccess, error: onError }); function onSuccess(data){ alert("记录提交成功...."); } function onError(error){ console.log(error); // 用console.log替代alert,能看到更详细的错误信息 alert('提交失败,请查看控制台日志'); } } function GetListItemType(name){ return "SP.Data." + name.charAt(0).toUpperCase() + name.slice(1) + "ListItem"; }
内容的提问来源于stack exchange,提问作者Abdul Farhan Muhammed
相关产品推荐
相关产品推荐

