如何将Ajax数据发布到您的服务器以更新SharePoint列表数据

如何解决如何将Ajax数据发布到您的服务器以更新SharePoint列表数据

我已经在这个DataTable上工作了一段时间了,除了最后一件事之外,它具有我需要的所有功能。现在,我的表从AJAX“ GET”请求中读取SharePoint列表数据,并根据父/子行对其进行填充和组织。

我需要我的DataTable做的最后一个功能是创建一个按钮,该按钮可让您向表中添加新行,然后根据“程序与可交付项”将其自动分类为正确的子行。类别。完成之后,我想让DataTable将数据发送到相应的SharePoint列表,这是否可以通过AJAX“ POST”请求完成?

我该如何实现这一目标?此刻我完全迷路了。

这是我的代码:

function loadData() { //Initializing the AJAX Request function to load in the external list data from different subsites
    //create an array of urls to run through the ajax request instead of having to do multiple AJAX Requests
    var urls = ["url1","url2","url3","url4","url5","url6","url7","url8"];
       
    for (i=0; i < urls.length; i++) { //for loop to run through the AJAX until all URLs have been reached
      $.ajax({
        url: urls[i],'headers': { 'Accept': 'application/json;odata=nometadata' },success: function (data) { // success function which will then execute "GETTING" the data to post it to a object array (data.value)
          data = data;
          var table = $('#myTable').DataTable();
          table.rows.add( data.value ).draw();
        }
      }); 
    }
}

$(document).ready(function() {
    var collapsedGroups = {}; 
    var top = '';
    var parent = '';
    
  var table = $('#myTable').DataTable( {
    "columns": [
      { "data": "Program",visible: false },{ "data": "Deliverable",{ "data": "To" },{ "data": "Date" },{ "data": "Approved" },{ "data": "Notes" }
    ],dom: "<'row'<'col-sm-12 col-md-10'f><'col-sm-12 col-md-2'B>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",buttons: [{
      extend: 'collection',className: "btn-dark",text: 'Export',buttons:
      [{
      extend: "excel",className: "btn-dark"
    },{
      extend: "pdf",{
      extend: "print",className: "btn-dark"   
    },],}],order: [[0,'asc'],[1,'asc'] ],rowGroup: {
            dataSrc: [
            'Program','Deliverable'
            ],startRender: function (rows,group,level){
                var all;
                if (level === 0) {
                    top = group;
                    all = group;
                } else if (level === 1) {
                    parent = top + group; 
                    all = parent; 
                    // if parent collapsed,nothing to do
                    if (!collapsedGroups[top]) {
                        return;
                    }                   
                } else {
                    // if parent collapsed,nothing to do
                    if (!collapsedGroups[parent]) {
                        return;
                    } 
                    all = top + parent + group;
                }

                var collapsed = !collapsedGroups[all];
                console.log('collapsed:',collapsed);
              
              rows.nodes().each(function(r) {
                r.style.display = collapsed ? 'none' : '';
              });
              //Add category name to the <tr>.
              return $('<tr/>')
                .append('<td colspan="8">' + group + ' (' + rows.count() + ')</td>')
                .attr('data-name',all)
                .toggleClass('collapsed',collapsed);
                
            
            }
            
        }
  } );
    
 loadData();

 $('#myTable tbody').on('click','tr.dtrg-start',function () {
        var name = $(this).data('name');
        collapsedGroups[name] = !collapsedGroups[name];
        table.draw(false);
    }); 
var table = $('#example').DataTable( {

var urls = ["url1",...];
  
for (i=0; i < urls.length; i++) {     
  ajax: {
    url: urls[i],method: "POST",data: function( ) {
      return dataToSend;
    }
  },}
} );
    
} );
} );
.btn-dark {
    color: #fff;
    background-color: #343a40;
    border-color: #343a40;
}
div.container {
    min-width: 980px;
    margin: 0 auto;
}
.header {
  padding: 10px;
  text-align: center;
}
body {
    font: 90%/1.45em "Helvetica Neue",HelveticaNeue,Verdana,Arial,Helvetica,sans-serif;
    margin: 0;
    padding: 0;
    color: #333;
    background-color: #fff;
}
div.dt-button-collection {
    position: static;
}
<link rel ="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.css"/>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.js"></script>
<script src="https://momentjs.com/downloads/moment.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.6.2/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.6.2/js/buttons.flash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
<script src="https://cdn.datatables.net/buttons/1.6.2/js/buttons.html5.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.6.2/js/buttons.print.min.js"></script>
<script src="https://cdn.datatables.net/rowgroup/1.1.2/js/dataTables.rowGroup.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.6.3/js/buttons.bootstrap4.min.js"></script>
<script src="https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap4.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script>
<link rel ="stylesheet" href="https://cdn.datatables.net/rowgroup/1.1.2/css/rowGroup.bootstrap4.min.css"/>
<link rel ="stylsheet" href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap4.min.css"/>
<link rel ="stylesheet" href="https://cdn.datatables.net/buttons/1.6.3/css/buttons.bootstrap4.min.css"/>
  <h1><strong>Deliverables</strong></h1>
  <p><strong>Click the Program/Deliverable names to Collapse/Expand the rows</strong></p>
</div>
<div class ="container">
<table id="myTable" class="table table-bordered" cellspacing="0" width="100%">
  <thead class="thead-dark">
    <tr>
      <th>Program</th>
      <th>Deliverable</th>
      <th>To</th>
      <th>Date</th>
      <th>Approved</th>
      <th>Notes</th>
    </tr>
  </thead>
  <tfoot class="thead-dark">
  <tr>
      <th>Program</th>
      <th>Deliverable</th>
      <th>To</th>
      <th>Date</th>
      <th>Approved</th>
      <th>Notes</th>
    </tr>
  </tfoot>
</table>
</div>

我认为这应该是将数据从DataTable发送到SharePoint列表的正确功能,但是由于我无法弄清楚如何向数据表中添加新行/数据,因此它目前无用。

function sendData() {
    var urls = ["url1","url8"];
        
    var data1 = {
           Program: 'Please provide the Program name here',Deliverable: 'Please provide the type of deliverable here',To: 'Please provide the recipients email here',Date: 'Please provide the submission date here',Approved: 'Please provide where or not the deliverable has been approved here',Notes: Please provide notes about the deliverable here'
    };
     $.ajax({
        for (i=0; i < urls.length; i++) {
        $.ajax({
                   url: urls[i],data: JSON.stringify(data),headers: { "Accept": "application/json; odata=verbose","X-RequestDigest": $("#__REQUESTDIGEST").val()                                 
                   },success: function (data) {
                              alert('Item added successfully');
                  },error: function (error) {
                      alert("Error: "+ JSON.stringify(error));
                 }
          });
        }
    });
}

解决方法

您可以使用标准的jQuery ajax data选项从DataTales ajax请求中将数据发布到服务器-但要稍作修改以符合DataTables的使用方式。

用于将动态生成的数据发送到服务器的DataTables语法为documented here。方法是这样的:

ajax: {
  type: "POST",// or "GET"
  url: "http://whatever.com/endpoint",data: function () {
    return dataToSend; // dataToSend is just my JS variable
  }
}

请注意,这里的data选项是函数,它返回要发送到服务器的数据。

可以根据您的特定需求和上下文,以各种方式准备变量dataToSend的数据。

例如,它可以是标准HTML <form>的内容-所有表单输入字段的值。在这种情况下,您可能希望将表单的数据转换为JSON(例如,使用jQuery的$.serialize()函数或$.serializeArray()函数。

如果您的JavaScript代码中已经有一个JSON对象,则可以通过设置ajax contentType并对JSON进行字符串化来发送它-像这样:

ajax: {
  type: "POST",data: function () {
    contentType: "application/json",return JSON.stringify(dataToSend);
  }
}

(否则,默认内容类型为application/x-www-form-urlencoded。)

这里是一个示例,其中我们在一个页面中有一个简单的表格与DataTable:

<form id ="formOne">
    <input id="fieldOne" type="text" name="fieldOne"></input>
    <input id="fieldTwo" type="text" name="fieldTwo"></input>
    <input type="submit" value="Submit">
</form>

该表单具有两个输入字段和一个提交按钮。

DataTable ajax部分如下:

var table = $('#example').DataTable( {
  ajax: {
    url: "http://whatever.com/endpoint",method: "POST",data: function( ) {
      return dataToSend;
    }
  },// other items not shown
} );

页面加载后,表格照常显示。

如果用户填写表格并单击“提交”按钮,则此操作将被以下代码拦截:

var dataToSend;

$( "#formOne" ).on( "submit",function( event ) {
  event.preventDefault(); // stops the standard form submission from happening
  dataToSend = $( "#formOne" ).serializeArray();
  console.log( dataToSend );
  table.ajax.reload(); // calls the DataTables ajax request again
});

当然,由服务器来处理此请求中的结果数据。因为我的示例是一个POST请求,所以这将涉及服务器端代码访问表单参数数据。如何执行此操作取决于您使用的服务器端框架。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res