You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击按钮通过REST API向SharePoint列表添加项失败排查

SharePoint REST API 新增列表项报Bad Request排查方案

针对你遇到的点击按钮调用SharePoint REST API新增列表项时出现Bad Request的问题,从代码和场景出发,主要排查以下几个核心方向:

1. 列表实体类型名称错误

你代码中__metadata.type写的是SP.Data.viewsListItem,但SharePoint的实体类型名称区分大小写且与列表内部名称强绑定:

  • 若列表显示名称是Views(首字母大写),正确实体类型应为SP.Data.ViewsListItem
  • 不确定类型时,可通过以下GET请求获取准确值:
    $.ajax({
        url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('views')?$select=ListItemEntityTypeFullName",
        type: "GET",
        headers: { "Accept": "application/json;odata=verbose" },
        success: function(data) {
            console.log(data.d.ListItemEntityTypeFullName); // 打印正确实体类型
        }
    });
    

2. 请求Digest值无效

$("#__REQUESTDIGEST").val()在现代SharePoint页面中可能无法获取有效值,或页面加载后Digest已过期:

  • 替代方案:直接使用_spContextInfo.formDigestValue(兼容经典/现代页面)
  • 或通过接口获取最新Digest:
    function getRequestDigest() {
        return $.ajax({
            url: _spPageContextInfo.webAbsoluteUrl + "/_api/contextinfo",
            type: "POST",
            headers: { "Accept": "application/json;odata=verbose" }
        });
    }
    
    // 调用示例:
    getRequestDigest().done(function(data) {
        var digest = data.d.GetContextWebInformation.FormDigestValue;
        // 使用该digest发起新增请求
    });
    

3. 列表名称匹配问题

getByTitle('views')区分大小写,需确认列表实际名称(含大小写、空格)与代码中完全一致,比如列表真实名称是Views而非views,会直接导致请求异常。

4. 必填字段未赋值

检查views列表是否存在除Title外的其他必填字段,若有则必须在data参数中添加对应字段赋值,否则会触发Bad Request。

修正后的示例代码

以下是调整了实体类型和Digest获取逻辑的完整代码:

$(document).ready(function(){
    jQuery(document).on("click", '#btnClick', function(){
        CreateListItem();
    });     

    function CreateListItem() {
        // 先获取有效请求Digest
        $.ajax({
            url: _spPageContextInfo.webAbsoluteUrl + "/_api/contextinfo",
            type: "POST",
            headers: { "Accept": "application/json;odata=verbose" },
            success: function(digestData) {
                var formDigest = digestData.d.GetContextWebInformation.FormDigestValue;
                // 发起新增列表项请求
                $.ajax({
                    url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('views')/items",
                    type: "POST",
                    headers: {
                        "Accept": "application/json;odata=verbose",
                        "Content-Type": "application/json;odata=verbose",
                        "X-RequestDigest": formDigest
                    },
                    data: JSON.stringify({
                        __metadata: {
                            type: "SP.Data.ViewsListItem" // 替换为实际获取的实体类型
                        },
                        Title: "New Title"
                        // 其他必填字段在此添加
                    }),
                    success: function (data) {
                        console.log("Success");
                    },
                    error: function (xhr) {
                        // 打印详细错误信息辅助排查
                        console.log(xhr.responseText);
                    }
                });
            }
        });
    }
});

建议在error回调中打印xhr.responseText,其中包含具体错误描述,能更快定位问题。

内容的提问来源于stack exchange,提问作者TonyT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 06:06:45