【问题标题】:SyntaxError: missing ; before statement on JSONResponse语法错误:缺少;在 JSONResponse 声明之前
【发布时间】:2017-03-25 10:29:48
【问题描述】:

我遇到了这种错误:

SyntaxError: missing ; before statement

我不知道是什么导致了错误,但我这里有这段代码:

(function pollschedule(){
    $.ajax({type: "GET",
    dataType: "jsonp",
    contentType: "application/json",
    url: "http://127.0.0.1:8080/get/schedule/1/",
    success: function(data){
        console.log(data);
    }, 
    complete: pollschedule, timeout: 5000});
})();

如果您可能需要查看 http://127.0.0.1:8080/get/schedule/1/ 是什么:

def get_schedule(request, sid):
    schedule = Schedule.objects.filter(id=sid, date=datetime.datetime.now()).values('id', 'sched__name', 'date', 'time')
    sched_collection = collections.defaultdict(list)
    for i in schedule:
        sched_collection[i['sched__name']].append(i)

    return JsonResponse({"schedule" : dict(sched_collection)})

然后返回:

{"schedule": {"CWW": [{"date": "2016-11-11", "time": "17:10:10"}]}}

错误指向响应中“schedule”后面的分号。

【问题讨论】:

    标签: jquery python json ajax django


    【解决方案1】:

    JSONP 不是JSON。你的响应是 JSON,但你告诉 jQuery 期待 JSONP。

    要么使响应有效 JSONP,要么更新执行检索的代码以期望 JSON。 (请注意,如果您执行后者,则会遇到跨域问题,除非您运行 ajax 的页面也在 http://127.0.0.1:8080 上。)

    【讨论】:

    • 很好,我错过了那里的数据类型。
    • @T.J. Crowder 我将 dataType 更改为 json,你说得对,我遇到了跨域并得到了照顾。现在我的问题是为什么它没有显示在模板上?很抱歉要求更多。
    • @JanWilmar:在这个网站上搜索“同源策略”(SOP)和“跨源资源共享”(CORS)以及更多关于 JSONP 的信息。
    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多