微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 在金字塔中如何返回400响应与json数据?

我有以下 jquery代码
$.ajax({
    type: 'POST',url: url,data: data,dataType: 'json',statusCode: {
        200: function (data,textStatus,jqXHR) {
                console.log(data);
            },201: function (data,jqXHR) {
                 log(data);
            },400: function(data,jqXHR) {
                log(data);
            },},});

当后端(金字塔)验证失败时,使用400.现在从金字塔我如何返回HTTPBadRequest()响应与包含验证错误的json数据?我尝试过如下:

response = HTTPBadRequest(body=str(error_dict)))
response.content_type = 'application/json'
return response

但是当我在firebug中检查它返回400(坏请求)这是很好,但它从来没有解析从上面的data.responseText的json响应.

解决方法

那么你应该可以从序列化error_dict开始使用一个json库.
import json
out = json.dumps(error_dict)

鉴于您没有提供关于您的视图设置的任何上下文,我只能告诉您我将如何做:

@view_config(route_name='some_route',renderer='json')
def myview(request):
    if #stuff fails to validate:
        error_dict = # the dict
        request.response.status = 400
        return {'errors': error_dict}

    return {
        # valid data
    }

如果你想自己创建回应,那么:

response = HTTPBadRequest()
response.body = json.dumps(error_dict)
response.content_type = 'application/json'
return response

要调试该问题,请停止基于jQuery的工作原理,并自行查看请求以确定Pyramid是否正常运行,或者是否还有其他功能.

curl -i <url>

或者甚至只需在浏览器中打开调试器,查看响应中返回的内容.

原文地址:https://www.jb51.cc/jquery/176235.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐