Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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 在日历函数中使用promises响应(需要来自ajax调用的数据)_Javascript_Php_Ajax_Promise - Fatal编程技术网

Javascript 在日历函数中使用promises响应(需要来自ajax调用的数据)

Javascript 在日历函数中使用promises响应(需要来自ajax调用的数据),javascript,php,ajax,promise,Javascript,Php,Ajax,Promise,Ajax呼叫承诺: var promise = new Promise(function(resolve, reject) { jQuery.ajax({ url:'<?php echo site_url();?>/MyController/ajax_cal', type:'POST', dataType: "JSON", success:function(results) {

Ajax呼叫承诺:

var promise = new Promise(function(resolve, reject) {
    jQuery.ajax({
            url:'<?php echo site_url();?>/MyController/ajax_cal',
            type:'POST',
            dataType: "JSON",
            success:function(results) {
                resolve(results); 
                //reject(Error(request.statusText)); // status is not 200 O K, so reject
            }
        });
  });
Calander javascript代码:

<!-- Calander Module starts-->
    var calendar = $('#calendar').calendar({

        console.log(data); /// want to use the data from ajax call on promises 
        events_source: data  , // here 
        view: 'month',
        tmpl_path: '<?php echo base_url();?>asserts/bootstrap_calender/tmpls/',
        tmpl_cache: false,
        day: '2017-02-14',
        onAfterEventsLoad: function(events) {
            if(!events) {
                return;
            }
            var list = $('#eventlist');
            list.html('');

            $.each(events, function(key, val) {
                $(document.createElement('li'))
                    .html('<a href="' + val.url + '">' + val.title + '</a>')
                    .appendTo(list);
            });
        },
        onAfterViewLoad: function(view) {
            $('.page-header h3').text(this.getTitle());
            $('.btn-group button').removeClass('active');
            $('button[data-calendar-view="' + view + '"]').addClass('active');
        },
        classes: {
            months: {
                general: 'label'
            }
        }
}); 
(function($) {
$('.btn-group button[data-calendar-nav]').each(function() {
        var $this = $(this);
        $this.click(function() {
            calendar.navigate($this.data('calendar-nav'));
        });
    });

    $('.btn-group button[data-calendar-view]').each(function() {
        var $this = $(this);
        $this.click(function() {
            calendar.view($this.data('calendar-view'));
        });
    });

    $('#first_day').change(function(){
        var value = $(this).val();
        value = value.length ? parseInt(value) : null;
        calendar.setOptions({first_day: value});
        calendar.view();
    });

    $('#language').change(function(){
        calendar.setLanguage($(this).val());
        calendar.view();
    });

    $('#events-in-modal').change(function(){
        var val = $(this).is(':checked') ? $(this).val() : null;
        calendar.setOptions({modal: val});
    });
    $('#format-12-hours').change(function(){
        var val = $(this).is(':checked') ? true : false;
        calendar.setOptions({format12: val});
        calendar.view();
    });
    $('#show_wbn').change(function(){
        var val = $(this).is(':checked') ? true : false;
        calendar.setOptions({display_week_numbers: val});
        calendar.view();
    });
    $('#show_wb').change(function(){
        var val = $(this).is(':checked') ? true : false;
        calendar.setOptions({weekbox: val});
        calendar.view();
    });
    $('#events-modal .modal-header, #events-modal .modal-footer').click(function(e){
        //e.preventDefault();
        //e.stopPropagation();
    });
}(jQuery));  
<!-- Calander Module ends-->

var calendar=$('#calendar')。日历({
console.log(data);///想要使用来自ajax调用的数据吗
事件\u来源:数据,//此处
视图:“月”,
tmpl_路径:“断言/引导_日历/tmpls/”,
tmpl_缓存:false,
日期:2017-02-14,
onAfterEventsLoad:函数(事件){
如果(!事件){
返回;
}
变量列表=$(“#事件列表”);
html(“”);
$.each(事件、函数(键、值){
$(document.createElement('li'))
.html(“”)
.附件(清单);
});
},
onAfterViewLoad:函数(视图){
$('.page header h3').text(this.getTitle());
$('.btn组按钮')。removeClass('active');
$('button[data calendar view=“”+view+“]”)addClass('active');
},
课程:{
月份:{
概述:“标签”
}
}
}); 
(函数($){
$('.btn组按钮[数据日历导航])。每个(函数(){
var$this=$(this);
$this。单击(函数(){
calendar.navigate($this.data('calendar-nav'));
});
});
$('.btn组按钮[数据日历视图])。每个(函数(){
var$this=$(this);
$this。单击(函数(){
calendar.view($this.data('calendar-view'));
});
});
$('first#u day')。更改(函数(){
var值=$(this.val();
value=value.length?parseInt(值):空;
setOptions({first_day:value});
calendar.view();
});
$('#语言')。更改(函数(){
calendar.setLanguage($(this.val());
calendar.view();
});
$('#模式中的事件')。更改(函数(){
var val=$(this).is(':checked')?$(this).val():null;
setOptions({modal:val});
});
$(“#格式-12小时”)。更改(函数(){
var val=$(this).is(':checked')?true:false;
setOptions({format12:val});
calendar.view();
});
$('#show_wbn')。更改(函数(){
var val=$(this).is(':checked')?true:false;
setOptions({display_week_number:val});
calendar.view();
});
$('#show_wb')。更改(函数(){
var val=$(this).is(':checked')?true:false;
setOptions({weekbox:val});
calendar.view();
});
$(“#事件模式.模式页眉,#事件模式.模式页脚”)。单击(函数(e){
//e、 预防默认值();
//e、 停止传播();
});
}(jQuery));

我想在“calendar events\u source field”中获取动态数据(json格式)。我曾经使用过ajax调用,但是我知道在ajax调用之外无法访问变量。我使用Promissions成功地在ajax调用之外警告变量,但仍然无法在“calendar events\u source”字段中访问它。我不知道什么地方出了问题,也不知道如何使用它

解决此问题的一种方法是在有数据(在then块中)后创建日历元素。我可能会这样做,以便构建UI,然后触发抓取,然后在then()函数中调用ONAFTEREVENTS加载接收到的事件,因为它似乎在构建日历。

解决此问题的一种方法是在有数据后创建日历元素(在then块中)。我可能这样做是为了构建UI,然后触发抓取,然后在then()函数中调用afterevents加载接收到的事件,因为它似乎构建了日历。

我也尝试过同样的方法。我已经在承诺中创建了日历元素。但是它不起作用。那么您面临什么样的错误/问题呢?当我将日历元素放在“then”块中时,日历元素不会执行。否则,当放置在“then”块之外时,日历的动态数据(ajax输出)不起作用,但日历起作用。我没有找到日历函数,但它可以很好地处理ajax调用之外的一些静态内容(但我需要来自控制器的一些动态数据),我也尝试过同样的方法。我已经在承诺中创建了日历元素。但是它不起作用。那么您面临什么样的错误/问题呢?当我将日历元素放在“then”块中时,日历元素不会执行。否则,当放置在“then”块之外时,日历的动态数据(ajax输出)不起作用,但日历起作用。我没有找到日历函数,但它与ajax调用之外的一些静态内容配合得很好(但我需要控制器中的一些动态数据)
<!-- Calander Module starts-->
    var calendar = $('#calendar').calendar({

        console.log(data); /// want to use the data from ajax call on promises 
        events_source: data  , // here 
        view: 'month',
        tmpl_path: '<?php echo base_url();?>asserts/bootstrap_calender/tmpls/',
        tmpl_cache: false,
        day: '2017-02-14',
        onAfterEventsLoad: function(events) {
            if(!events) {
                return;
            }
            var list = $('#eventlist');
            list.html('');

            $.each(events, function(key, val) {
                $(document.createElement('li'))
                    .html('<a href="' + val.url + '">' + val.title + '</a>')
                    .appendTo(list);
            });
        },
        onAfterViewLoad: function(view) {
            $('.page-header h3').text(this.getTitle());
            $('.btn-group button').removeClass('active');
            $('button[data-calendar-view="' + view + '"]').addClass('active');
        },
        classes: {
            months: {
                general: 'label'
            }
        }
}); 
(function($) {
$('.btn-group button[data-calendar-nav]').each(function() {
        var $this = $(this);
        $this.click(function() {
            calendar.navigate($this.data('calendar-nav'));
        });
    });

    $('.btn-group button[data-calendar-view]').each(function() {
        var $this = $(this);
        $this.click(function() {
            calendar.view($this.data('calendar-view'));
        });
    });

    $('#first_day').change(function(){
        var value = $(this).val();
        value = value.length ? parseInt(value) : null;
        calendar.setOptions({first_day: value});
        calendar.view();
    });

    $('#language').change(function(){
        calendar.setLanguage($(this).val());
        calendar.view();
    });

    $('#events-in-modal').change(function(){
        var val = $(this).is(':checked') ? $(this).val() : null;
        calendar.setOptions({modal: val});
    });
    $('#format-12-hours').change(function(){
        var val = $(this).is(':checked') ? true : false;
        calendar.setOptions({format12: val});
        calendar.view();
    });
    $('#show_wbn').change(function(){
        var val = $(this).is(':checked') ? true : false;
        calendar.setOptions({display_week_numbers: val});
        calendar.view();
    });
    $('#show_wb').change(function(){
        var val = $(this).is(':checked') ? true : false;
        calendar.setOptions({weekbox: val});
        calendar.view();
    });
    $('#events-modal .modal-header, #events-modal .modal-footer').click(function(e){
        //e.preventDefault();
        //e.stopPropagation();
    });
}(jQuery));  
<!-- Calander Module ends-->