如何使用ajax处理400 Bad请求

时间:2017-08-02 07:45:10

标签: javascript jquery ajax flask

我想通过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')])

引发了异常,因为关键字是"字段"但是传递的数据没有关键字匹配"字段"。所以我将以不同的方式传递数据(我猜)......

0 个答案:

没有答案