Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript在数组上迭代并输入另一个函数_Javascript_Json_Wordpress_Fullcalendar - Fatal编程技术网

javascript在数组上迭代并输入另一个函数

javascript在数组上迭代并输入另一个函数,javascript,json,wordpress,fullcalendar,Javascript,Json,Wordpress,Fullcalendar,我正在填充一个FullCalendar.io实例,并从我的站点上的Wordpress REST API中提取数据 我能够执行XHR请求并返回数组myData中的相关数据 添加的事件如下所示: var calendarEl = document.getElementById('calendar'); var calendar = new FullCalendar.Calendar(calendarEl, { initialView: 'dayGridMonth',

我正在填充一个FullCalendar.io实例,并从我的站点上的Wordpress REST API中提取数据

我能够执行XHR请求并返回数组myData中的相关数据

添加的事件如下所示:

var calendarEl = document.getElementById('calendar');

var calendar = new FullCalendar.Calendar(calendarEl,
      {
        initialView: 'dayGridMonth',
        events: [
           {
             title: 'Event Title2',
             start: $start,
             end: '2021-04-08T13:13:55-0400',
           }
         ],
      });
      calendar.render();
      }
    });
这在标题中的脚本标记中,并呈现到页面的div#日历中

使用
let$start=myData[0].acf.start时,$start被正确插值和渲染

但是,我希望迭代myData并返回一个对象,我可以对该对象进行日志控制台操作,但随后无法将其输入到
events:


        function myFunction(element) {
        let x = element.acf.start;
        let y = element.acf.end;
        let title1 = element.title.rendered;
        var event = {title: title1, start: y, end: x};
      
        //return event;

我尝试将一个格式正确的javascript对象放入
事件:
数组中,但它不起作用。尝试调用myFunction()也不起作用

我遇到了一些错误,例如$start未定义,因此我尝试将其移动到下面以使其全局可用(通过在函数定义它之前调用它)

我希望在日历的“事件”选项中正确呈现每个事件的对象

如何将我的所有事件(而不仅仅是最新的事件)放入日历中,例如代替myData[0].acf.start,以便能够访问myData数组中的每个项目的.acf.start并将其返回到事件数组

非常感谢您的帮助

阅读fullCalendar的文章。这使您能够定义一个可重用的回调函数来获取事件。因此,在该回调中,您可以运行AJAX请求,获取事件,将它们转换为fullCalendar格式,并通过提供的“success”回调函数将它们传递到日历

每当日历中的日期范围发生更改时,FullCalendar将重新运行此操作,因此您应该确保服务器端代码只返回与FullCalendar提供的日期匹配的事件

大概是这样的:

  document.addEventListener('DOMContentLoaded', function() {

    var calendarEl = document.getElementById('calendar');
    var calendar = new FullCalendar.Calendar(calendarEl,
    {
      initialView: 'dayGridMonth',
      events: function(info, successCallback, failureCallback) {
        let url = 'https://svc.local/wp-json/wp/v2/event?' + new URLSearchParams({
          start: info.startStr,
          end: info.endStr
        });

        fetch(url)
        .then(function(response) {
          return response.json();
        })
        .then(function(jsonResponse) {
          // do something with jsonResponse
          console.log(jsonResponse);
          var events = [];

          jsonResponse.forEach(function(el) {
            var event = {
              start: el.acf.start,
              end: el.acf.end,
              title: el.title.rendered
            };
            events.push(event);
          });
        
          successCallback(events);
        })
        .catch(function(err) {
          failureCallback(err);
        });
      }
    });

    calendar.render();
});

把你的问题弄得一团糟我认为你把它搞得太复杂了。读取-您可以在其中运行XHR请求,获取事件,将其转换为fullCalendar格式,并通过提供的回调将其传递到日历。每次日历中的日期范围更改时,FullCalendar都会重新运行此操作,因此您应该确保服务器端代码只返回与FullCalendar提供的日期匹配的事件。@ADyson My events作为json提要与标准wordpress rest api一起提供。根据文档
var calendar=new calendar(calendarEl,{events:'http://svc.local/wp-json/wp/v2/event'   });但我得到了未捕获的引用错误:未定义日历。据我所知,我的文件已正确导入,否则日历将无法显示。我试图换成FullCalendar,但它说不是构造函数。知道问题是什么吗?感谢you@Vel不管怎样,请看JSFIDLE,我期待着类似这样的东西:。假设a)url是可访问的,b)数据是以预期的格式返回的,包括日期等格式,fullCalendar可以理解。我还没有看到API返回的任何数据示例,因此我无法对此发表评论,但您可以将其与fullCalendar文档中列出的有效数据进行比较。如果它还不是100%,它至少会提供正确的结构,这样您就可以继续调试它,直到它完全正确为止。