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>

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

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...