我想通过ajax post请求发送参数,但我总是获得状态400.这里是js
$(document).on('click','#create-chart-button', function(e){
e.preventDefault();
var fields = {};
$('.can-drop').each(function(item){
fields[item] = ($(this)[0].innerText);
}) ;
console.log(fields);
$.ajax({
type:'POST',
url: '/create/api/',
data: {
"fields": fields,
},
cache: true,
success:function(data){
console.log(data);
}
})
});
数据来自用户选择的可拖动对象。这是我在请求对象中获得的参数示例:
fields[0]:"name"
fields[1]:"jobtime"
fields[2]:"id"
我正在使用烧瓶,这是我的路线:
@app.route('/create/api/', methods=['POST'])
def populate_chart():
if request.method == 'POST':
fields = request.form['fields']
print(fields)
pass
我不想使用表格。在调试时,ajax数据在request.form中(即使我没有使用该表单)。但后来我遇到了同样的错误。 我试过使用JSON.stringfy,但似乎没有任何改变。 我将继续尝试解决方案,但每次使用ajax并发布时都会出现此错误,因此我想了解错误修复的位置。谢谢!
UPDATE 调试时我看到了这个:
def __getitem__(self, key):
"""Return the first data value for this key;
raises KeyError if not found.
:param key: The key to be looked up.
:raise KeyError: if the key does not exist.
"""
if key in self:
lst = dict.__getitem__(self, key)
if len(lst) > 0:
return lst[0]
raise exceptions.BadRequestKeyError(key)
我的数据是:
ImmutableMultiDict([('fields[0]', 'callid'), ('fields[1]', 'jobtime')])
引发了异常,因为关键字是"字段"但是传递的数据没有关键字匹配"字段"。所以我将以不同的方式传递数据(我猜)......