Rumah > Soal Jawab > teks badan
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.
高洛峰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...
天蓬老师2017-05-18 11:03:48
Ajax jquery tidak memerlukan JSON.stringify apabila menghantar data Ia akan mengendalikannya secara automatik.
迷茫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:
.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.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'