环境说明:
python 2.6.6
Django 1.5.0
jQuery 1.8.1
问题描述:
jQuery ajax 发送 POST 请求
状态码 200 但是response为空
导致错误,错误原因为response为空,无法通过json解析
并且这种错误断断续续的出现,有时候结果正常,有时候response为空
Django输出正常,没有错误出现
问题代码:
$.ajax({
type: 'POST',
url: url,
data: {},
dataType: 'json',
success: function (data) {
xxx
}
});
@json_response
def get_connect_num(request):
"""
获取当前连接数
"""
return [100]
from json import JSONEncoder
from django.http import HttpResponse
class Encoder(JSONEncoder):
'''
重载JSONEncoder,让其可以解析class
'''
def default (self, obj):
return obj.__dict__
def json_encode(obj):
'''
针对json库不方便的问题,进行的重写
'''
return Encoder(ensure_ascii=False).encode(obj)
def json_response(func):
'''
自动封装返回值为json格式
'''
def warp(*args, **kwargs):
'''
封装函数
'''
result = func (*args, **kwargs)
if isinstance(result, HttpResponse):
result["Content-Type"] = 'application/json'
return result
return HttpResponse(json_encode(result),
content_type='application/json')
return warp
截图: