我的Django应用程序出现了一个错误,我似乎找不出我的生活
基本上,问题是我的getJSON调用在我的模板中失败了,我不知道为什么,因为我可以通过浏览器直接访问url,而且开发服务器也显示了200个响应。
这是我的看法
def test(request):
cases = ConfirmedCase.objects.all()
cases = read_frame(cases, fieldnames=['provice_state', 'country_region', 'confirmedcases','date'])
cases['date'] = pd.to_datetime(cases['date'])
globaltrend = globaltrend.groupby('date')[['confirmedcases','1_day_growth']].sum().reset_index()
globaltrend['date'] = globaltrend['date'].dt.date #convert back to date
globaltrend= globaltrend.to_dict(orient='list')
data = {}
data['chart_data'] = globaltrend
data = json.dumps(data, default=str)
return HttpResponse(data, content_type='application/json')这是网址
from tracker import views as tracker
urlpatterns = [
path('test/', tracker.test, name="test"),
]如果我在浏览器中访问http://127.0.0.1:8000/test/,一切都很好,我看到了
{
"chart_data": {
"date": [
"2020-03-26",
"2020-03-27"
],
"confirmedcases": [
66885,
69030,
],
"1_day_growth": [
3.21,
3.18,
],
}
}下面是我的模板/html文件中的脚本
<script >
$(document).ready(function(){
var url = '{% url "test" %}'
$.getJSON(url, function(d) {
console.log("working");
alert('yay')
}).done(function(d) {
console.log("done");
}).fail(function(d) {
console.log("error");
console.log(url);
}).always(function(d) {
console.log("completed regardl");
});
});
</script>这会一直抛出一个错误(我没有看到警报),尽管它正确地记录了url。我只是不能成功地执行回调
以下是我的开发服务器的刷新输出
[29/Mar/2020 00:53:59] "GET /test/ HTTP/1.1" 200 1498我需要这个作为我的模板中的图表。任何帮助都是非常感谢的。
更新
我认为此错误与视图有关,因为当我将视图简化为以下内容时:
def test(request):
data = {"hello":[1,2,3]}
return HttpResponse(json.dumps(data, default=str), content_type='application/json')我的getJSON调用在浏览器中开始工作(即我可以在控制台日志中看到警报和成功)
我不明白为什么原始视图直接通过url而不是通过getJSON调用工作。
发布于 2020-03-31 15:21:57
我解决了这个问题。这与json转储中缺少的值有关。基本上,如果视图中生成的json转储中有NaN或inf值,即使url将正确显示转储,通过ajax查询数据也会导致失败。
将这些行添加到视图中修正了全局趋势= globaltrend.replace(np.inf,0) #将inf值替换为0 globaltrend = globaltrend.replace(np.NaN,0) #替换NaN值为0的问题
https://stackoverflow.com/questions/60908991
复制相似问题