无法将json对象传递给python服务器程序

2024-03-29 15:42:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于python和jquery的应用程序。每当我试图对某些事件调用日志机制时,都会遇到以下问题。我还没有找到可以解决这个问题的stackoverflow的答案

POST http://localhost:5000/uploadLog/[object%20Object] 500 (INTERNAL SERVER ERROR)

在前端.js文件:

    var eventObj = { 
                               'eventType': 'Type1',
                               'eventDesc': event.target.href
            };
$.post('/uploadLog/'+eventObj, function(response){
            alert("successfully logged");
        })

在控制器.py地址:

@app.route('/uploadLog/<eventObj>', methods=['POST'])
def uploadLog(eventObj):
    loggerProg.updateLog(eventLogObj)
    return jsonify({'status':'success'})

在日志程序.py地址:

def updateLog(eventObj):
    parsed_obj = json.load(eventObj)

我试图在一个文件中写eventObj,结果在文件中得到了“[object]”。你知道吗


Tags: 文件答案py应用程序http地址def事件
1条回答
网友
1楼 · 发布于 2024-03-29 15:42:32

您需要a)在将JavaScript对象发布到服务器之前序列化它,b)将请求的Content-Type头设置为application/json,如下所示:

$.ajax({
    url: "/uploadLog",
    type: "POST",
    data: JSON.stringify(eventObj),
    contentType: "application/json",
    success: function() {
        alert("Success!");
    }
});

然后在服务器上,为了方便起见,使用Flask的get_json()函数解析请求主体:

@app.route('/uploadLog', methods=['POST'])
def uploadLog():
    parsed_obj = request.get_json()

相关问题 更多 >