我們一般在服務端返回 json 格式數據給瀏覽器端時,會使用下面的代碼:
response.setContentType("text/javascript;charset=UTF-8");
或者:
response.setContentType("application/json;charset=UTF-8");
但是兩種什么區別呢?
其實很簡單。前者用於返回js代碼,后者專門用於返回 json 格式的數據。
也就是說,前者 返回的 js 代碼,會自動在 瀏覽器中進行執行,就像返回的結果被 eval(result) 調用了一樣。也就是說返回的字符串,會被當做 js 代碼,被瀏覽器的js引擎進行執行。而不是當做普通的字符串顯示在瀏覽器中。
后者專門用於返回 json 格式的數據,而 json 格式是 js 代碼的一個子集。也就是說 json 格式的數據,也是 js 代碼,也會被瀏覽器的js引擎執行,而生成 json 對象。
但是 json 格式的范圍比 js 代碼的范圍要小很多。json 是 js 的一個子集。關於 json 的具體格式要求,參見:http://www.json.org/
所以如果返回的是 json 格式,那么用兩者都是可以的。
------------------------------
服務端 向 客戶端 發送 JSON數據 時:
Content-Type = 'application/json;charset=UTF-8'
服務端 向 客戶端 發送 JS 代碼 時:
Content-Type = 'text/javascript;charset=UTF-8'
服務端 判斷 客戶端 提交的是否是 JSON數據 時 :
Content-Type = 'application/json;charset=UTF-8'
Content-Type = 'text/json;charset=UTF-8'
Content-Type = 'text/javascript;charset=UTF-8'
Content-Type = 'application/javascript;charset=UTF-8'
只要 Content-Type 滿足上面4個條件中的 任意一個時,就可以認為提交的數據是 JSON數據