我正在创建一个Web表单,其中两个字段是datetime
数据类型。然后,我通过AJAX将此表单数据传递到服务器。下面是代码JQuery代码段。
$(document).ready(function(){
$('#btnSubmit').click(function(){
var start = $("#start").val();
var end = $("#end").val();
$.ajax({
type:'POST',
url: '/interuption',
data: $('#formint').serializeArray(),
success: function(response){
alert(response);
},
error: function(error){
console.log(error);
}
});
});
});
相关的HTML如下:
<form id = "formint" class="myForm" method= "post" action="/interuption">
<th>
<label>Start Time Stamp
<input id = "start" type="datetime-local" name="start_timestamp" required>
</label>
</th>
<th>
<label>End Time Stamp
<input id ="end" type="datetime-local" name="end_timestamp" required>
</label>
</th>
</form>
在服务器端,我正在使用Flask。我正在使用request.form.get
方法来检索datetime
。然后,我尝试将其推送到MS SQL Server。以下是Python代码段。
cnxn = pyodbc.connect(#credentials)
cursor=cnxn.cursor()
query_insert = "INSERT INTO test.dbo.testFeed(start_timestamp,end_timestamp)
VALUES (?,?)"
@app.route('/interuption',methods = ['GET','POST'])
def interuption():
try:
data_1 = datetime.datetime.strptime(request.form.get('start'),%Y-%m-%d %H-%M-%S')
data_2 = datetime.datetime.strptime(request.form.get('end'),%Y-%m-%d %H-%M-%S')
if data_1 and data_2:
cursor.execute(query_insert,(data_1,data_2))
cnxn.commit()
cnxn.close()
return json.dumps({'status':'OK'})
else:
return json.dumps({'error':'data has not been insterted!!'})
except Exception as e:
return json.dumps({'excp':str(e)})
return render_template('form.html')
运行上述代码时,出现如下错误
{"excp": "time data 'None' does not match format '%Y-%m-%d %H-%M-%S'"}
很显然,request.form.get
没有从Web表单中获取任何值。
我该如何摆脱呢?
答案 0 :(得分:0)
将表单数据作为键值对发送到服务器时,键将是function calcFreq() {
return list.children.map(i => +i.textContent).reduce((acc, val) => {
if (acc[val]) {
acc[val] += 1;
} else {
acc[val] = 1;
}
return acc;
}, {});
}
(而不是name
)的<input>
属性,因此您应该尝试{{1 }}和id
。