摘要:實(shí)際上用封裝的方法,設(shè)置為或者,都可以自動(dòng)轉(zhuǎn)換為格式,即使是,這時(shí)用函數(shù)打印返回值,是類型,這也是之前代碼沒有問題的原因?;蛘呤褂棉D(zhuǎn)換一下返回值,也是可以的。
導(dǎo)語
緣由是這樣的,給前端返回 json 數(shù)據(jù),反饋說數(shù)據(jù)不對(duì)(前端是在原代碼基礎(chǔ)上復(fù)制修改的,去掉 jsonp)??戳讼潞蠖舜a,發(fā)現(xiàn)是兩次返回 json 的代碼不同。但這不是問題的原因,然后再一看 JS 代碼,是前端沒有進(jìn)行轉(zhuǎn)換。也正好借此機(jī)會(huì),看了下平時(shí)沒有注意到的點(diǎn)。
分析日常寫代碼,返回一些簡(jiǎn)短數(shù)據(jù)的時(shí)候,沒有使用框架封裝的方法,如下
exit(json_encode(["message" => "test"]));
這時(shí)候響應(yīng)頭的 Content-Type 是 text/html 。
如果用框架(ThinkPHP 3.0)的返回方式,
$this->ajaxReturn(["message" => "test"]);
這時(shí)候響應(yīng)頭的 Content-Type 是 text/html; charset=utf-8 。看了源碼,是有這行代碼的
header("Content-Type:text/html; charset=utf-8");結(jié)論
實(shí)際上,json 數(shù)據(jù)是有特定的 Content-Type,是 application/json 。后來又去看了 Laravel ,返回 json 的時(shí)候, Content-Type 就是 application/json 。出現(xiàn)這樣的問題,是因?yàn)樽约翰粔驀?yán)謹(jǐn),而且使用的框架有些老舊。
補(bǔ)充一下,后來又看了前端的代碼。實(shí)際上用 JQuery 封裝的 ajax 方法,dataType 設(shè)置為 jsonp 或者 json,都可以自動(dòng)轉(zhuǎn)換為 json 格式,即使 Content-Type 是 text/html; charset=utf-8,這時(shí)用 typeof 函數(shù)打印返回值,是 object 類型,這也是之前代碼沒有問題的原因?;蛘呤褂?JSON.parse() 轉(zhuǎn)換一下返回值,也是可以的。當(dāng)然最穩(wěn)妥的方案還是后端設(shè)置 Content-Type 為 application/json。
參考資料:Content-Type。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30035.html
摘要:輸出為因此當(dāng)我們發(fā)送令牌時(shí),在服務(wù)端接收到的是,如果仍用處理,將發(fā)生錯(cuò)誤。文件上傳失敗解決刪除你的自定義請(qǐng)求頭設(shè)置參見實(shí)踐補(bǔ)充篇,文件上傳怎么設(shè)置 fetch(url, { // GET, POST, PUT, DELETE等 method: GET, }) 關(guān)于 GET 參數(shù) 發(fā)送GET請(qǐng)求時(shí)的query參數(shù)不能放到對(duì)象中(如:{a:1, b:2}) 必須在 url...
摘要:默認(rèn)情況下,跨域請(qǐng)求發(fā)起時(shí)候不包含,需要我們主動(dòng)將的屬性設(shè)為才行。出現(xiàn)錯(cuò)誤時(shí),會(huì)返回完整的棧,有利排查。不然如果出現(xiàn)錯(cuò),響應(yīng)頭不包含這兩個(gè)跨域標(biāo)記,就會(huì)理所當(dāng)然地不顯示返回內(nèi)容,也就無法看到錯(cuò)誤描述,根本無法排查。 首發(fā)我的博客 HTML5中提供了跨域加載數(shù)據(jù)的方法,讓我們得以從JSONP或者Flash中介等各種繞行方案中解脫出來,更加順暢地與服務(wù)器交流。另一方面,因?yàn)镻HP...
摘要:目標(biāo)是讓與的交互盡可能的更友好。在版本以上已經(jīng)成為了默認(rèn)的版本。不同類型的鍵值對(duì)分割符號(hào)分別是。這將會(huì)協(xié)商服務(wù)端和你安裝的支持的最高協(xié)議版本。 博客原文? HTTPie 是一個(gè)命令行 HTTP 客戶端。目標(biāo)是讓 CLI 與 Web services 的交互盡可能的更友好。它提供了一個(gè)簡(jiǎn)單的 http 命令,可以讓我們用簡(jiǎn)單自然的表述發(fā)送任意 HTTP 請(qǐng)求,并且可以輸出帶代碼高亮的結(jié)果...
摘要:如何開啟來壓縮網(wǎng)頁文件提高網(wǎng)站速度要知道網(wǎng)站的打開速度取決于瀏覽器打開下載的網(wǎng)頁文件大小。你可以在配置中開啟來壓縮網(wǎng)頁文件。默認(rèn)情況下,僅壓縮文件。服務(wù)器上設(shè)置站點(diǎn)上設(shè)如何在中開啟壓縮服務(wù)讓網(wǎng)頁速度更快服務(wù)器設(shè)置壓縮是開發(fā)里很普遍的做法。nginx如何開啟gzip來壓縮網(wǎng)頁文件提高網(wǎng)站速度?要知道網(wǎng)站的打開速度取決于瀏覽器打開下載的網(wǎng)頁文件大小。如果傳輸?shù)捻撁鎯?nèi)容文件減少,那你網(wǎng)站的打開速度...
閱讀 2348·2021-11-15 11:38
閱讀 3558·2021-09-22 15:16
閱讀 1200·2021-09-10 11:11
閱讀 3170·2021-09-10 10:51
閱讀 2950·2019-08-30 15:56
閱讀 2789·2019-08-30 15:44
閱讀 3194·2019-08-28 18:28
閱讀 3533·2019-08-26 13:36