诡异的http状态码200,但是没有response的问题

开源中国首席鉴定大湿 发布于 2013/12/10 10:09
阅读 8K+
收藏 0

环境说明:

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

截图:

加载中
0
开源中国首席鉴定大湿
开源中国首席鉴定大湿

我好像找到解决方法了。。。

因为我的ajax方法是用在多个url的

然后有的url不要传参数,但是我用的还是那个要传参的url里面的参数

貌似就导致这个问题出现

但是我猜这个不应该啊,参数都不会处理为什么会这样呢???

留着这个疑问吧。。。

0
旧城的骁珖
旧城的骁珖
你尝试用google的python sdk 访问它的api就知道了 返回为空的时候多了。解决办法多尝试几次
开源中国首席鉴定大湿
开源中国首席鉴定大湿
不太清楚你的意思 我这是自己的API 而且你说的解决办法。。。怎么解决
0
开源中国首席鉴定大湿
开源中国首席鉴定大湿

Django更新为1.5.5了

问题依旧存在,我实在没招了

0
徐迎龙
徐迎龙
这个一定是服务器端的编码问题
开源中国首席鉴定大湿
开源中国首席鉴定大湿
不清楚是不是服务端问题,我的解决方案指向wsgi可能有缺陷
0
knd2
knd2

请问问题是否解决?我现在也遇到同样问题。

但是是在本机测试没问题,但是推到线上,变成多进程处理后就有问题。

开源中国首席鉴定大湿
开源中国首席鉴定大湿
额~~我的已经解决了! 是由于给不要参数的url传了参数导致的 你这个我就不清楚原因了
返回顶部
顶部