Как Flask обрабатывает JSON?

0

Я работаю над редактируемой таблицей, используя FLASK, JSON и JQuery

Я получил сериализованную форму и отправил через $.getJSON, который вы можете увидеть в нижней части моего JS-кода:

Вот код JS:

  $(function(){

 $('tbody').on('click', 'td', function() {

    displayForm( $(this) );

 });


function displayForm (cell) {

var column = cell.attr('name'),
    id = cell.closest('tr').attr('id'),
    cellWidth = cell.css('width')
    prevContent = cell.text(),
    form = '<form action="javascript: this.preventDefault"><input type="text" name="newValue" size= "4" value="'+prevContent+'"/><input type="hidden" name="id" value= "'+id+'" />'+'<input type="hidden" name="column" value="'+column+'"/></form>';

cell.html(form).find('input[type=text]')
.focus()
.css('width', cellWidth);

cell.on('click', function() {return false;});

cell.on('keydown', function(e) {

    if (e.keyCode == 13) {
        changeField(cell, prevContent);
    } else if (e.keyCode == 27) {
        cell.text(prevContent);
        cell.off('click');
    }

});
}

function changeField(cell, prevContent) {

cell.off('keydown');

var url = '/jsonurl?',
    input = cell.find('form').serialize();


$.getJSON(url+input, function(data){

    if (data.success)
        cell.html(data.value);
    else {
        alert('There was a problem updating the data.');
        cell.html(prevContent);
    }

});

cell.off('click');

}
});

и на стороне обработки я использую Flask для обработки этих данных, но когда я редактирую форму и "/Users/Team/Desktop/Flask/routes.py" клавишу ввода для отправки формы, она говорит: Файл "/Users/Team/Desktop/Flask/routes.py", строка 72, в

jsonurl column = request.args.GET('column')

AttributeError: 'ImmutableMultiDict' object has no attribute 'GET'

Что это значит? Кажется, я неправильно обрабатываю JSON. Может ли кто-нибудь сказать мне, как правильно обращаться с этими данными?

Вот коды на стороне обработки (что я думаю, что это неправильно и вам нужно ваше предложение):

@app.route('/jsonurl')
def jsonurl():
    column = request.args.GET('column')
    id = request.args.GET('id')
    newValue = request.args.GET('newValue')

    g.db = connect_db()
    cur = g.db.execute('UPDATE customer SET column = newValue WHERE rowid=id')
    g.db.commit()
    g.db.close()
    return jsonify(success=True, value=newValue)
Теги:
flask

1 ответ

2
Лучший ответ

Используйте нижний регистр "get" вместо "GET" с request.args ниже:

request.args.get('column')

.args содержат параметры GET.

  • 0
    Большое спасибо, мой друг ^^ Сри, я новичок

Ещё вопросы

Сообщество Overcoder
Наверх
Меню