Rumah  >  Soal Jawab  >  teks badan

javascript - Bagaimana untuk menerima data json yang dihantar dari jquery dari flask?

Apl kelalang menerima data json dari bahagian hadapan, tetapi permintaan kelalang tidak berjaya menerimanya, dan ia tidak berfungsi walaupun selepas menukar banyak fungsi.
kod js

$(function(){
    $("#test").click(function(){
        $.ajax({
            url: "{{ url_for('main.getjson') }}",
            type: "POST",
            data: JSON.stringify({
                "n1": "test1",
                "n2": "test2",
                "n3": "test3"
            }),
            dataType: "json",
            success: function(data){
                var a = data.user
                var texthtml = "<p>" + a + "</p>"
                $("#result").html(texthtml)
            }
        });
    });
});

Lihat fungsi dalam kelalang:

@main.route('/getjson', methods = ['GET', 'POST'])
def getjson():
    a = request.json
    if a:
        return jsonify(user = "Right")
    return jsonify(user = "error")

Hanya menentukan sama ada request.json wujud, tetapi rentetan yang dikembalikan sentiasa "ralat". Sentiasa ada null dalam request.json. Kemudian, saya menukar request.args.get(), tetapi ia juga tidak berjaya. Di mana silapnya saya dengan ikhlas meminta nasihat.

漂亮男人漂亮男人2711 hari yang lalu613

membalas semua(3)saya akan balas

  • 高洛峰

    高洛峰2017-05-18 11:03:48

    Saya menemui jawapannya, tetapi terdapat masalah dengan bahagian jquery. Parameter contentType $.ajax lalai kepada "application/x-www-form-urlencoded". Anda perlu menetapkan parameter ini kepada application/json.

    $.ajax({
            url: "{{ url_for('main.getjson') }}",
            type: "POST",
            data: JSON.stringify({
                "n1": "test1",
                "n2": "test2",
                "n3": "test3"
            }),
            contentType: "application/json",
            dataType: "json",
            success: function(data){
                var a = data.user
                var texthtml = "<p>" + a + "</p>"
                $("#result").html(texthtml)
            }
        });

    Rujukan: https://flask.readthedocs.io/...
    http://stackoverflow.com/ques...

    balas
    0
  • 天蓬老师

    天蓬老师2017-05-18 11:03:48

    Ajax jquery tidak memerlukan JSON.stringify apabila menghantar data Ia akan mengendalikannya secara automatik.

    balas
    0
  • 迷茫

    迷茫2017-05-18 11:03:48

    Mengikut penerangan anda, anda telah menemui masalahnya, mengapa tidak terus mencuba, atau membaca dokumentasi

    @app.route('/api', methods=['POST'])
    def api():
        a = request.json
        b = request.get_data()
        c = request.values
        print a
        print b
        print c
        if a:
            return 'ok'
        return 'error one'

    Hasil keluaran

    None
    {"id":1}
    CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([('{"id":1}', u'')])])

    request.json sangat pelik memang tiada data, tetapi ia boleh digunakan Sebab ia tidak berguna di sini adalah seperti berikut:

    .

    json Jika mimetype ialah aplikasi/json, ini akan mengandungi data yang dihuraikan
    JSON jika tidak, kaedah get_json() seharusnya
    digunakan.#🎜 🎜#Tetapi apabila saya menggunakan get_json(), ia dengan kejam melaporkan ralat mengatakan AttributeError: 'Request' object tidak mempunyai atribut 'get_json'

    Jadi saya hanya berjaya menggunakan request.json sekali, tetapi tidak pernah berjaya lagi, kerana ia adalah ajaib Jika anda boleh mencari alternatif untuk request.json, sila.

    balas
    0
  • Batalbalas