带有 json 和 web2py 的 Fullcalendar 中的错误



我在打电话:

events: {
    url: '/CondominioVip/evento/evento_json.json',
    error: function() {
        alert('there was an error while fetching events!');
    }
}

我也尝试添加type: 'POST但也没有用。

我的控制器:

def evento_json():
    events= "[{'title':'event1','start':'2010-01-01'},{'title':'event3','start':'2010-01-09 12:30:00','allDay':False}]"
    return events

从浏览器测试调用 ( http://localhost:8000/CondominioVip/evento/evento_json.json ):

[{'title':'event1','start':'2010-01-01'},{'title':'event3','start':'

2010-01-09 12:30:00','allDay':False}]

来自web2py ajax函数的请求:

Accept:application/json, text/javascript, /; q=0.01
接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3
接受编码:gzip,deflate,sdch
Accept-Language:pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
缓存控制:最大年龄=0
连接方式:保持活动
状态 内容长度:31
内容类型:application/x-www-form-urlencoded
饼干:session_id_admin=127.0.0.1-f9db7d99-4e7e-4bae-a229-d6614e9599f0;cvip_language=铂-BR;session_id_condominiovip=127.0.0.1-b820cbe3-9a55-40bb-8618-8d3f9a43f7c2
主持人:localhost:8000
产地:http://localhost:8000
推荐人: http://localhost:8000/CondominioVip/evento/index/2
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5
X-Request-with:XMLHttpRequest

响应标头:

缓存

控制:无存储、无缓存、必须重新验证、检查后=0、预检查=0
连接方式:保持活动
状态 内容长度:105
内容类型:应用程序/JSON
日期:2012年5月29日星期二 02:54:04 GMT
到期:星期二, 29 五月 2012 02:54:03 GMT
杂注:无缓存
服务器:火箭 1.2.4 蟒蛇/2.7.3
设置饼干:cvip_language=pt-BR;到期=星期三, 30-五月-2012 02:54:04 GMT;路径=/, session_id_condominiovip=127.0.0.1-b820cbe3-9a55-40bb-8618-8d3f9a43f7c2;路径=/
X-Powered-By:web2py

响应:

[{'title':'event1','start':'2010-01-01'},{'title':'event3','start':'

2010-01-09 12:30:00','allDay':False}]

我别无选择。任何帮助将不胜感激。

更新:

我已经在Chrome上安装了JsonView扩展程序,因此返回字符串不被视为json响应。

我做了一些更改:

def evento_json():
    rows = db(evento.id>0).select(evento.id,evento.titulo,evento.data_hora_inicio,evento.data_hora_fim)
    events = []
    for row in rows:
        event = {'title': row['titulo'],
                 'start': row['data_hora_inicio'],
                 'end': row['data_hora_fim'],
                 'allDay': False,
                 'url': URL(c='evento', f='index', args=[row['id']], extension=False)}
        events.append(event)
    return events

但是web2py抛出了一个错误。在将其发送到generic.json之前,我已经打印了"events"和"json(events)",其格式正是fullcalendar所期望的。

我发现停止错误的方法是:

在控制器中:

def evento_json():
    import datetime
    start = datetime.datetime.fromtimestamp(int(request.vars['start'])).strftime('%Y-%m-%d %H:%M:%S')
    end = datetime.datetime.fromtimestamp(int(request.vars['end'])).strftime('%Y-%m-%d %H:%M:%S')
    set = db((evento.id>0) &
             (evento.data_hora_inicio >= start) &
             (evento.data_hora_fim <= end))
    if (not auth.has_membership(auth.id_group(role='site_admin'), auth.user.id)) and 
       (not auth.has_membership(auth.id_group(role='cond_admin'), auth.user.id)):
        set = set(evento.flag_disp==True)
    rows = set.select(evento.id,
                      evento.titulo,
                      evento.data_hora_inicio,
                      evento.data_hora_fim,
                      evento.flag_disp)
    events = []
    for row in rows:
        event = {'title': row['titulo'],
                 'start': row['data_hora_inicio'],
                 'end': row['data_hora_fim'],
                 'allDay': False,
                 'url': URL(c='evento', f='index', args=[row['id']], extension=False),
                 'color': 'blue' if row['flag_disp'] is True else 'red'}
        events.append(event)
    if events:
        from gluon.serializers import json
        return XML(json(events))
    else:
        return '{}'

并使用以下内容创建一个视图 evento/evento_json.json:

{

{=response._vars)}}

它有效!但对我来说似乎是一个错误。我不确定我是否做错了什么。

也许可以尝试:

events= "[{'title':'event1','start':'2010-01-01'},{'title':'event3','start':'2010-01-09T12:30:00Z','allDay':false}]"

(根据 API 将 event3 开始日期/时间更改为ISO8601格式,并将"False"更改为"false"。

相关内容

  • 没有找到相关文章