在flas中以意外格式接收到Ajax post Json数据

2024-05-04 21:55:27 发布

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

您好,我正在尝试向flask应用程序发送一个包含json数据的ajax post请求。尝试使用request.get_json()但它返回一个NoneType对象,但是请求.窗体返回字典。在

我的json数据有点

var JsonData = {
    dd_token : "abcd" ,
    file_name : "abcd.mp4",
    configuration : [ { video : { aspect_ratio: 4:3, format :mp4 } ,
                        audio : { bitrate: 300 , format : mp3 }
                      },
                      { video : { aspect_ratio: 4:3, format :mp4 } ,
                        audio : { bitrate: 300 , format : mp3 }
                      },
                    ]
    email : 'abc@example.com'
};

这是我用Jsondata发出的ajax post请求

^{pr2}$

这是我接收json数据的flask路由

@app.route('/post_job',methods=['POST'])
def get_job():
  directory = generate_random()  
  json_put(request.form,os.path.join(directory,'convert_to.json'))
  return "Done"

def json_put(data, filename):
    try:
        jsondata = simplejson.dumps(data, indent=4, skipkeys=True, sort_keys=False)
        fobj = open(filename, 'w')
        fobj.write(jsondata)
        fobj.close()
    except Exception as e:
        print 'ERROR writing', filename
        print e
    return

这是jsondump之后的文件内容

{
    "configuration[0][1][audio][audio_ff]": "mp3",
    "configuration[0][1][video][video_ff]": "mp4",
    "configuration[0][0][audio][audio_bps]": "100",
    "configuration[0][1][video][video_bps]": "200",
    "configuration[0][0][video][video_ff]": "mp4",
    "file_name": abcd.mp4",
    "configuration[0][0][audio][audio_ff]": "mp3",
    "configuration[0][1][audio][audio_bps]": "100",
    "configuration[0][0][video][video_bps]": "200",
    "configuration[0][1][video][video_fps]": "24",
    "configuration[0][0][video][res_width]": "320",
    "configuration[0][1][audio][audio_freq]": "30000",
    "configuration[0][0][video][res_height]": "240",
    "configuration[0][1][video][aspect_ratio]": "4:3",
    "configuration[0][1][video][res_width]": "320",
    "configuration[0][0][audio][audio_freq]": "30000",
    "configuration[0][1][video][res_height]": "240",
    "configuration[0][0][video][video_fps]": "24",
    "configuration[0][1][audio][audio_vol]": "0",
    "configuration[0][0][audio][audio_vol]": "0",
    "email": "subho.prp@gmail.com",
    "dd_token": "PJUPK4SDCI8OACWHK3F3",
    "configuration[0][0][video][aspect_ratio]": "4:3"
}

这是我的JsonData构建过程

$('#save').click(function(event){
    event.preventDefault();
    JsonArr[box_count]=createBox();

});

function createBox()
{var temp = {};
var collection={};

$.each($('#video :input'),function(index,value){
collection[value.name] = value.value;
//other processing
});
temp['video']=collection;
collection={};
$.each($('#audio :input'),function(index,value){
collection[value.name] = value.value;
//other processing
});
temp['audio']=collection;
collection={};
return temp;
}

Tags: namejsonformatvaluevideoresmp3audio
1条回答
网友
1楼 · 发布于 2024-05-04 21:55:27

您当前发布的是一个对象,然后jquery将其转换为param字符串。如果希望发布json,请将json放在data选项中,并适当地设置contentType。在

...
data: JSON.stringify(theData),
contentType: 'application/json',
...

相关问题 更多 >