как я могу использовать данные из Ajax в колбу?
у меня возникли проблемы с получением данных, опубликованных из jQuery ajax.
$('#clickme').click( function() {
    var data = save_input(); // data
    data['_sid'] = $survey_id;  // survey_id injected from flask
    data['_uip'] = $user_ip; // user_ip injected from flask, request.remote_addr
    $.ajax({
        type : "POST",
        url : "{{ url_for('mod.load_ajax') }}",
        data: JSON.stringify(data),
        contentType: 'application/json;charset=UTF-8',
        success: function(result) {
            console.log(result);
        }
    });
    console.log(data);
});
из кода data - это объект JavaScript, как
{
    'foo' : 'foo',
    'bar' : 'bar',
    'fo_' : 42,
}
что я пытаюсь сделать в колбе :
@mod.route('/load_ajax', methods=["GET", "POST"])
def load_ajax():
    if request.method == "POST":
        # load _sid and _uip from posted JSON and save other data
        # but request.form is empty.
        # >>> request.form
        # ImmutableMultiDict([]) 
        return str(request.form)
смотрите, запрос ajax сделан, но данные не представлены. Я делаю console.log(data) С ajax, чтобы я мог видеть, что у меня действительно есть некоторые значимые данные в data переменная в jquery. но просьба.форма в представлении ajax пуста. Где мои данные представлены? 
4 ответа:
попробовать
$.ajax({ type : "POST", url : "{{ url_for('mod.load_ajax') }}", data: JSON.stringify(data, null, '\t'), contentType: 'application/json;charset=UTF-8', success: function(result) { console.log(result); } });затем с сервера вы можете ссылаться на переменные в данных следующим образом:
request.json['foo']так как тип контента указан как
application/jsonданныеrequest.json
в соответствии с вашим примером вы не отправляете пару значений ключа, а назначаете строку JSON для параметра данных jQuery. Как уже упоминалось в комментариях, вы должны построить свой JSON, создать объект с ключом (который будет использоваться для доступа к строке JSON из flask), а затем назначить его ключу данных jQuery.
$.ajax({ type : "POST", url : "{{ url_for('mod.load_ajax') }}", data: {json_str: JSON.stringify(data)}, contentType: 'application/json;charset=UTF-8', success: function(result) { console.log(result); } }); @mod.route('/load_ajax', methods=["GET", "POST"]) def load_ajax(): if request.method == "POST": # load _sid and _uip from posted JSON and save other data # but request.form is empty. # >>> request.form # ImmutableMultiDict([]) return str(request.form['json_str'] )