Ajax post Json 在烧瓶中以意外格式收到数据
Ajax post Json data received in unexpected format in flask
您好,我正在尝试将带有 json 数据的 ajax post 请求发送到烧瓶应用程序。尝试使用 request.get_json()
但它 returns 一个 NoneType
对象但是 request.form returns 字典。
我的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'
};
这是我的 ajax post 使用 Jsondata 的请求
$('#submit').click(function(event){
event.preventDefault();
JsonData.dd_token = data['dd_token'];
JsonData.file_name = data['file'];
JsonData.email = $('input[name="email"]').val();
JsonData.configuration.push(JsonArr);
var url= window.location.origin+'/post_job';
$.ajax({
url: url,
method : "POST" ,
dataType: 'json',
data : JsonData ,
success:function(result){
$("#div1").html(result);
}});
});
这是我接收 json 数据的烧瓶路线
@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;
}
您当前 post 是一个对象,然后 jquery 将其转换为参数字符串。如果您希望 post json,请在数据选项中输入 json 并适当设置 contentType。
...
data: JSON.stringify(theData),
contentType: 'application/json',
...
您好,我正在尝试将带有 json 数据的 ajax post 请求发送到烧瓶应用程序。尝试使用 request.get_json()
但它 returns 一个 NoneType
对象但是 request.form returns 字典。
我的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'
};
这是我的 ajax post 使用 Jsondata 的请求
$('#submit').click(function(event){
event.preventDefault();
JsonData.dd_token = data['dd_token'];
JsonData.file_name = data['file'];
JsonData.email = $('input[name="email"]').val();
JsonData.configuration.push(JsonArr);
var url= window.location.origin+'/post_job';
$.ajax({
url: url,
method : "POST" ,
dataType: 'json',
data : JsonData ,
success:function(result){
$("#div1").html(result);
}});
});
这是我接收 json 数据的烧瓶路线
@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;
}
您当前 post 是一个对象,然后 jquery 将其转换为参数字符串。如果您希望 post json,请在数据选项中输入 json 并适当设置 contentType。
...
data: JSON.stringify(theData),
contentType: 'application/json',
...