一個隱蔽的jq getJson回調(diào)不執(zhí)行問題

一般而言jq的getJson回調(diào)不執(zhí)行除了請求本身就出錯之外那肯定就是json格式本身有問題了
最近在做一個demo,使用python的flask框架進行構(gòu)建,route代碼如下:

>run.py
@app.route('/data/getHotWordContent')
def getHotWordContent():
    hot_word = request.args.get('hot_word')
    return api.getHotWordContent(hot_word=hot_word)

>api.py
from flask import jsonfy
 def getHotWordContent(self, hot_word='', start_date='2019-07-31', end_date='2019-08-14'):
        wf = Wordfrequency(start_date=start_date, end_date=end_date)
        json_data = []
        data = wf.findHotWordContent(hot_word=hot_word)
        for d in data:
            json_data.append({'author': d[0], 'content': d[1]})
        return jsonify({'data': json_data})

調(diào)用的js代碼如下

var loadHotWordContent = function (hot_word) {
    console.log('Loading hot word information ...')
    $.getJSON({
        url: pre_url + '/data/getHotWordContent',
        data: {'hot_word': hot_word},
        function(data) {
            console.log('Json data load successfully!')
        }
    })
}

很詭異的是我在控制臺的network中查看請求已經(jīng)成功,而且使用的是flask本身的jsonfy工具,json肯定不會有格式問題,依然無法調(diào)用回調(diào)函數(shù),經(jīng)過一上午的研究終于發(fā)現(xiàn)了問題。

查找json的官方文檔有

傳入格式有誤的 JSON 字符串可能導(dǎo)致拋出異常。例如,下面這些無效的 JSON 字符串:
{test: 1} (test 沒有使用雙引號包裹).
{'test': 1} ('test' 用了單引號而不是雙引號包裹).
"{test: 1}" (test 沒有使用雙引號包裹).
"{'test': 1}" ('test' 用了單引號而不是雙引號包裹).
"'test'" ('test' 用單引號代替雙引號).
".1" (number 必須以數(shù)字開頭; "0.1" 將是有效的).
"undefined" (undefined 不能表示一個 JSON 字符串; 然而null,可以).
"NaN" (NaN 不能表示一個 JSON 字符串; 用Infinity直接表示無限也是不允許的).

在flask中,如果遇到None值會直接格式化成為NaN從而觸發(fā)這個bug
將None值替換即可解決問題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容