javascript - Bagaimana untuk menerima data json yang dihantar dari jquery dari flask?
漂亮男人
漂亮男人 2017-05-18 11:01:48
0
3
614

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.

漂亮男人
漂亮男人

membalas semua(3)
小葫芦

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...

Peter_Zhu

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

迷茫

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!