使用JSOM创建新的列表项 [英] Creating new list items with JSOM

查看:52
本文介绍了使用JSOM创建新的列表项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到以下错误:请求失败.来自服务器的意外响应. null"我正在使用SharePoint Online政府.

I'm getting the following error: "Request failed. Unexpected response from server. null" I'm using SharePoint Online Gov.

function getDaysArray(monthNumber, yearString){
//function returns the days of the month 
var yearMonth = "'" + yearString + "-" + monthNumber + "'";

//get the number of calendar days plus one for increment
var numberOfDays = moment(yearMonth, "YYYY-MM").daysInMonth()+1;
//checks if the month number is under 10
if (monthNumber < 10){
//sets month to a string with a zero before it
var vMonth = "0" + monthNumber.toString();
}
else{
//sets month to a string without a leading zero
var vMonth = monthNumber.toString();
}

var daysArray = [];
var iDay = 1;
while (iDay < numberOfDays)
{
//set varibles for weekend and holiday flags
var weekEnd = false;
if(iDay < 10){
var workingDay = yearString + "-" + vMonth + "-" + "0" + iDay.toString();
}
else{
var workingDay = yearString + "-" + vMonth + "-" + iDay.toString();
}

//check for weekend and set flag if it is
if (moment(workingDay).day() == 0 || moment().day() == 6)
{
//set weekend flag to true
weekEnd = true;
}

//skip appointments if weekend
if (weekEnd == false){
//set the days array with the working day date
daysArray.push(workingDay);
} //weekEnd-holiday if statement end

//increment
iDay++;
}//end of days loop - iDay
return daysArray;

}



  function createAppointments(currentYear)
  {
    var listName = "Visitor Calendar";
    var context = new SP.ClientContext.get_current(); // the current context is taken by default here
    //you can also create a particular site context as follows
    var lstObject = context.get_web().get_lists().getByTitle(listName);
    var newItem = null;
var theYear = currentYear.toString();

var m = 1;

//loops through all 12 months
while(m < 13){
var datesWeekdays = getDaysArray(m, theYear);
var numWeekDays = datesWeekdays.length;

//loops through all days
   for(var i = 0,len = numWeekDays; i < len; i++)
   {
var dateWDArray = [];
dateWDArray = datesWeekdays[i].split("-");

//startDate for first appointment
var startDateTime1 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 14, 30);
//end date for first appointment
var endDateTime1 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 15, 30);

//startDate for second appointment
var startDateTime2 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 15, 30);
//end date for first appointment
var endDateTime2 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 16, 30);

//Create available appointment for first time slot
newItem = lstObject.addItem(new SP.ListItemCreationInformation());  
newItem.set_item('Title', 'Available Appointment');
newItem.set_item('EventDate', startDateTime1);
newItem.set_item('EndDate', endDateTime1);
newItem.update();    

//Create available appointment for second time slot
newItem = lstObject.addItem(new SP.ListItemCreationInformation());  
newItem.set_item('Title', 'Available Appointment');
newItem.set_item('EventDate', startDateTime2);
newItem.set_item('EndDate', endDateTime2);
newItem.update();        
   }  

m++;

}
context.executeQueryAsync(Function.createDelegate(this, this.onSuccess),
    Function.createDelegate(this, this.onFailure));     
}

  function onSuccess() 
  {
 alert("Refresh to see that the appointments have been created.");   
 console.log('Items created');
  }

  function onFailure(sender, args) {
 console.log('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
  }


推荐答案

请调用createAppoinments函数到另一个没有参数的函数中,然后使用ExecuteOrDelayUntilScriptLoaded调用没有参数的函数,这是供您参考的示例:

Please call place the createAppoinments function in another function which without parameter and then use ExecuteOrDelayUntilScriptLoaded to call the function which without parameter, here is the sample for your reference:

<script src="https://code.jquery.com/jquery-1.12.4.js" type="text/javascript"></script>
<script src="https://momentjs.com/downloads/moment.js" type="text/javascript"></script>
<script type="text/javascript">


(document).ready(function(){ ExecuteOrDelayUntilScriptLoaded(ready,'sp.js'); }); 函数ready() { createAppointments("2017"); } 函数getDaysArray(monthNumber,yearString){ //函数返回一个月中的某几天 var yearMonth ='" + yearString +-" + monthNumber +'"; //获得日历天数加1以增加 var numberOfDays = moment(yearMonth,"YYYY-MM").daysInMonth()+ 1; //检查月份数是否小于10 如果(monthNumber< 10){ //将month设置为在其前面有零的字符串 var vMonth ="0" + monthNumber.toString(); } 别的{ //将月份设置为不带前导零的字符串 var vMonth = monthNumber.toString(); } var daysArray = []; var iDay = 1; 而(iDay< numberOfDays) { //设置周末和假日标志的变量 var weekEnd = false; if(iDay< 10){ var workingDay = yearString +-" + vMonth +-" +"0"; + iDay.toString(); } 别的{ var workingDay = yearString +-" + vMonth +-" + iDay.toString(); } //检查周末并设置标志是否为 如果(moment(workingDay).day()== 0 || moment().day()== 6) { //将周末标志设置为true weekEnd = true; } //如果周末则跳过约会 如果(weekEnd == false){ //使用工作日日期设置days数组 daysArray.push(workingDay); }//weekEnd-holiday if语句结束 //增量 iDay ++; }//日结束循环-iDay return daysArray; } 函数createAppointments(currentYear) { var listName =访问者日历"; var context = new SP.ClientContext.get_current(); //当前上下文默认为此处 //您还可以如下创建特定的网站上下文 var lstObject = context.get_web().get_lists().getByTitle(listName); var newItem = null; var theYear = currentYear.toString(); var m = 1; //遍历所有12个月 而(小于13岁){ var dateWeekdays = getDaysArray(m,theYear); console.log(datesWeekdays); var numWeekDays = dateSeekdays.length; console.log(numWeekDays); //整天循环 for(var i = 0,len = numWeekDays; i< len; i ++) { var dateWDArray = []; dateWDArray = dateSeekdays [i] .split(-"); //初次约会的startDate var startDateTime1 = new Date(dateWDArray [0],dateWDArray [1] -1,dateWDArray [2],14,30); //第一次约会的结束日期 var endDateTime1 = new Date(dateWDArray [0],dateWDArray [1] -1,dateWDArray [2],15,30); //startDate进行第二次约会 var startDateTime2 = new Date(dateWDArray [0],dateWDArray [1] -1,dateWDArray [2],15,30); //第一次约会的结束日期 var endDateTime2 = new Date(dateWDArray [0],dateWDArray [1] -1,dateWDArray [2],16,30); //为第一个时隙创建可用约会 newItem = lstObject.addItem(new SP.ListItemCreationInformation()); newItem.set_item('Title','Available Appointment'); newItem.set_item('EventDate',startDateTime1); newItem.set_item('EndDate',endDateTime1); newItem.update(); //为第二个时隙创建可用约会 newItem = lstObject.addItem(new SP.ListItemCreationInformation()); newItem.set_item('Title','Available Appointment'); newItem.set_item('EventDate',startDateTime2); newItem.set_item('EndDate',endDateTime2); newItem.update(); } m ++; } context.executeQueryAsync(Function.createDelegate(this,this.onSuccess), Function.createDelegate(this,this.onFailure)); } 函数onSuccess() { alert(刷新以查看约会已创建."); console.log('创建的物品'); } 函数onFailure(sender,args){ console.log('请求失败.'+ args.get_message()+'\ n'+ args.get_stackTrace()); } </script>
( document ).ready(function() { ExecuteOrDelayUntilScriptLoaded(ready, 'sp.js'); }); function ready() { createAppointments("2017"); } function getDaysArray(monthNumber, yearString){ //function returns the days of the month var yearMonth = "'" + yearString + "-" + monthNumber + "'"; //get the number of calendar days plus one for increment var numberOfDays = moment(yearMonth, "YYYY-MM").daysInMonth()+1; //checks if the month number is under 10 if (monthNumber < 10){ //sets month to a string with a zero before it var vMonth = "0" + monthNumber.toString(); } else{ //sets month to a string without a leading zero var vMonth = monthNumber.toString(); } var daysArray = []; var iDay = 1; while (iDay < numberOfDays) { //set varibles for weekend and holiday flags var weekEnd = false; if(iDay < 10){ var workingDay = yearString + "-" + vMonth + "-" + "0" + iDay.toString(); } else{ var workingDay = yearString + "-" + vMonth + "-" + iDay.toString(); } //check for weekend and set flag if it is if (moment(workingDay).day() == 0 || moment().day() == 6) { //set weekend flag to true weekEnd = true; } //skip appointments if weekend if (weekEnd == false){ //set the days array with the working day date daysArray.push(workingDay); } //weekEnd-holiday if statement end //increment iDay++; }//end of days loop - iDay return daysArray; } function createAppointments(currentYear) { var listName = "Visitor Calendar"; var context = new SP.ClientContext.get_current(); // the current context is taken by default here //you can also create a particular site context as follows var lstObject = context.get_web().get_lists().getByTitle(listName); var newItem = null; var theYear = currentYear.toString(); var m = 1; //loops through all 12 months while(m < 13){ var datesWeekdays = getDaysArray(m, theYear); console.log(datesWeekdays); var numWeekDays = datesWeekdays.length; console.log(numWeekDays); //loops through all days for(var i = 0,len = numWeekDays; i < len; i++) { var dateWDArray = []; dateWDArray = datesWeekdays[i].split("-"); //startDate for first appointment var startDateTime1 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 14, 30); //end date for first appointment var endDateTime1 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 15, 30); //startDate for second appointment var startDateTime2 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 15, 30); //end date for first appointment var endDateTime2 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 16, 30); //Create available appointment for first time slot newItem = lstObject.addItem(new SP.ListItemCreationInformation()); newItem.set_item('Title', 'Available Appointment'); newItem.set_item('EventDate', startDateTime1); newItem.set_item('EndDate', endDateTime1); newItem.update(); //Create available appointment for second time slot newItem = lstObject.addItem(new SP.ListItemCreationInformation()); newItem.set_item('Title', 'Available Appointment'); newItem.set_item('EventDate', startDateTime2); newItem.set_item('EndDate', endDateTime2); newItem.update(); } m++; } context.executeQueryAsync(Function.createDelegate(this, this.onSuccess), Function.createDelegate(this, this.onFailure)); } function onSuccess() { alert("Refresh to see that the appointments have been created."); console.log('Items created'); } function onFailure(sender, args) { console.log('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); } </script>

日历中的结果:

谢谢

最好的问候


这篇关于使用JSOM创建新的列表项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆