解析错误200 Json ajax webapp2

时间:2014-10-09 13:31:02

标签: jquery ajax json webapp2

我有来自jQuery的AJAX调用

function Admin_Ajax_pop_rows(){
$(document).ready(function(){
    variable1= 'none';
        $.ajax({
            type: "POST",
            url: "/someurl",
            dataType: "json",
            data: JSON.stringify({"variable1": variable1})
        })
        .success(function(data){
            alert('success response: ' + data + ' number of rows : ');
        })
        .done(function(data){
            alert ('rows : ' + data.return_rows);
            MakeTablejQuery(data);
        })
        .fail(function(error){
            alert('error status is : ' + error.status + ' text: ' + error.statusText + ' response     text : ' + error.responseText);
        });
    });
}

在我的Python服务器代码中我有

def post(self):
    user_key = ndb.Key(self.user_model,'value')
    user_key_parent = user_key.parent()
    user_query = self.user_model.query(ancestor = user_key_parent).order(ndb.GenericProperty(sort_field))
    query_data = user_query.fetch(i, projection=[ndb.GenericProperty('name'),ndb.GenericProperty('last_name'),ndb.GenericProperty('email_address')])
    table_prop_data = { 'return_rows': 9 , 'return_cols' : 8}
    return_table_prop_data = []
    return_table_prop_data = json.dumps(table_prop_data)
    return_data = []
    return_data = json.dumps([dict(p.to_dict(), **dict(id=p.key.id())) for p in query_data],default = date_handler)
    self.response.headers['content-type']=("application/json;charset=UTF-8")
    self.response.out.write(return_data)
    self.response.headers['content-type']=("application/json;charset=UTF-8")
    self.response.out.write(return_table_prop_data)

我收到错误" 200"状态为"解析错误"

JSONLint显示JSON错误

Parse error on line 74:
    ...662981951488    }]{    "return_cols":
    ---------------------^
    Expecting 'EOF', '}', ',', ']'

我在GAE上使用W​​ebapp2

Per Felix'建议我尝试使用以下内容创建字典 -

return_data = json.dumps({'table_props': dict(table_prop_data), 'query_data' : [dict(p.to_dict(), **dict(id=p.key.id())) for p in query_data],default = date_handler})

我收到语法错误。请帮我解决这个问题。这是我的date_handler函数。我需要这个来处理查询中的Datetime字段。

def date_handler(obj):
    return obj.isoformat() if hasattr(obj, 'isoformat') else obj

1 个答案:

答案 0 :(得分:1)

您似乎尝试在单个响应中返回两个单独的JSON blob。这可以起作用,正如您可以通过jsonlint错误看到的那样。整个响应必须是一个JSON blob。