【问题标题】:REST HTTP POST to SharePoint List with angularjs使用 angularjs 将 HTTP POST REST HTTP POST 到 SharePoint 列表
【发布时间】:2015-07-26 12:04:12
【问题描述】:

我正在使用 angularjs 创建一个简单的 SPA,它允许用户与 Hosted SharePoint 2013 中的预订列表进行交互。

我已经让 HTTP GET 工作正常,并为各种过滤查询检索预订。

但是,现在我想在列表中插入和更新记录,但 Fiddler 显示发生“HTTP 错误 403”,并且在 JSON 选项卡下显示以下内容:

value=此页面的安全验证无效并且可能已损坏。请使用您的网络浏览器的返回按钮再次尝试您的操作。

如果您能帮我确认以下代码应该可以工作,我将不胜感激。新预订表单上的提交按钮会触发帖子:

$scope.submitForm = function () {
  //new booking
    if ($scope.editableBooking.Id == 0) {
        service.insertBooking($scope.editableBooking, function (data) {
            $scope.editableBooking = data;
        });
    }
  // Update booking
    else {
        console.log("[submitForm] Update");
        service.updateBooking($scope.editableBooking, function (data) {
            $scope.editableBooking = data;
            console.log('[updatedBooking] id = ' + $scope.editableBooking.Id)
        });
    }
}

在我的工厂内,我有一项插入预订的服务:

var insertBooking = function (newBooking, callback) {
    console.log('[insertBooking] Id = ' + newBooking.Id + " Storeno = " + newBooking.Storeno);

    $http({
        method: 'POST',
        url: "/_api/web/lists/GetByTitle('Bookings')",
        data: $.param({
            Title: newBooking.Storeno,
            Description: newBooking.Description,
            BookedBy: newBooking.Bookedby,
            StartDate: newBooking.StartDate
        }),
        headers: { 'Accept': 'application/json; odata=verbose' }
    }).success(function (data) {
        console.log("[insertBooking] POST worked");
        console.log('[insertbooking] New Id = ' + data.Id);

        callback(data);

    }).error(function (er) {
        console.log('[insertBooking] Error = ' + er);
    });
}

Searching StackOverFlow 是Error 403 上的这篇文章,它讨论了 AppManifest。我无权访问此文件 - 它位于公司 Intranet 上 - 而且我还没有构建可安装的应用程序,只是通过 CEWP 调用的 angularjs 文件。

关于如何更新 SP 列表有什么建议吗?

【问题讨论】:

    标签: angularjs http-post sharepoint-2013


    【解决方案1】:

    我过去也遇到过同样的错误

    此页面的安全验证无效并且可能已损坏。请使用您的网络浏览器的返回按钮再次尝试您的操作。

    我找到了 Wictor Wilén 的 blog,它解释了如何刷新摘要令牌。

    基本上你在$http 调用之前插入这一行:

    UpdateFormDigest(_spPageContextInfo.webServerRelativeUrl, _spFormDigestRefreshInterval);
    

    博客中的一些要点:

    • 此方法是同步的,因此无需担心回调等问题。
    • 它使用更新间隔,仅在需要时更新表单摘要 - 因此,如果您的摘要尚未过期,则无需额外调用 SharePoint

    【讨论】:

      猜你喜欢
      • 2016-02-06
      • 2011-01-23
      • 2019-07-03
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 2017-10-17
      相关资源
      最近更新 更多