javascript - 怎么從flask中接受從jquery發(fā)送的json數(shù)據(jù)?
問(wèn)題描述
flask app中從前端接受json的數(shù)據(jù),但是flask的request中并沒有接受成功,其中沒有數(shù)據(jù),換了很多函數(shù)都行不通。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.uservar texthtml = '<p>' + a + '</p>'$('#result').html(texthtml) }}); });});
flask中的視圖函數(shù):
@main.route(’/getjson’, methods = [’GET’, ’POST’])def getjson(): a = request.json if a:return jsonify(user = 'Right') return jsonify(user = 'error')
僅僅判斷request.json是不是存在,但是返回來(lái)的總是“error”的字符串。request.json中總是null。后來(lái)?yè)Q了request.args.get(),同樣行不通。到底是哪里出錯(cuò)了,真心求教。
問(wèn)題解答
回答1:找到答案了,僅僅是在jquery部分出了問(wèn)題。$.ajax的參數(shù)contentType,默認(rèn)是 'application/x-www-form-urlencoded',需要把這個(gè)參數(shù)設(shè)置成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)} });
參考:https://flask.readthedocs.io/...http://stackoverflow.com/ques...
回答2:jquery的ajax發(fā)送data的時(shí)候不需要JSON.stringify.他會(huì)自動(dòng)處理.
回答3:根據(jù)你的描述,你的已經(jīng)把問(wèn)題找到了,為什么不繼續(xù)嘗試一下,或者看下文檔
@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’
輸出結(jié)果
None{'id':1}CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([(’{'id':1}’, u’’)])])
request.json很奇葩,確實(shí)沒數(shù)據(jù),但是它是可以用的,你這里沒用的原因如下:
json If the mimetype is application/json this will contain the parsedJSON data. Otherwise this will be None. The get_json() method shouldbe used instead.但是我使用get_json(),它無(wú)情的報(bào)錯(cuò)說(shuō)AttributeError: ’Request’ object has no attribute ’get_json’
所以我只是成功使用過(guò)一次request.json,后來(lái)再也沒有成功過(guò),因?yàn)樗苌衿妫绻梢哉乙粋€(gè)替代request.json吧。
相關(guān)文章:
1. 每個(gè)大神有沒有什么學(xué)習(xí)MySQL的好資料啊2. pdo_mysql 值自增寫法3. 表格對(duì)其 只涉及到對(duì)其,沒有涉及到大小,長(zhǎng)寬還有背景色類的嗎4. mysql數(shù)據(jù)庫(kù)中文輸入問(wèn)題5. MySQL主鍵沖突時(shí)的更新操作和替換操作在功能上有什么差別(如圖)6. javascript - vuejs+elementui 購(gòu)物車價(jià)格計(jì)算,點(diǎn)擊加減號(hào)修改數(shù)量總價(jià)都不會(huì)改變,但是計(jì)算執(zhí)行了7. 數(shù)據(jù)庫(kù) - Mysql的存儲(chǔ)過(guò)程真的是個(gè)坑!求助下面的存儲(chǔ)過(guò)程哪里錯(cuò)啦,實(shí)在是找不到哪里的問(wèn)題了。8. mysql - 如何高效的識(shí)別出異地代充的設(shè)備9. android 能否 用Python作為腳本10. css右浮動(dòng)字的順序顛倒了
