Quantcast
Channel: 黑暗執行緒
Viewing all articles
Browse latest Browse all 2311

讓IE直接顯示JSON結果

$
0
0

IE有個討人厭的行為。

當網頁程式以JSON格式傳回結果(JSON字串,且Content-Type設為application/json),在IE需下載另存檔案才能檢視,不像Chrome或Firefox可直接看結果。當需要反覆測試,"重新整理網頁->選取位置另存檔案->開檔看結果"的迴圈容易誘發焦慮、煩躁、爆怒等症狀,而一般患者多會啟動生物本能,默默關上IE改開Chrome尋求解脫...

例如,以下MVC Controller的GetJson()會以JSON格式傳回字串:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
 
namespace MyWeb.Controllers
{
publicclass HomeController : Controller
    {
public ActionResult Index()
        {
return View();
        }
 
public ActionResult GetJson()
        {
return Json("This is a test", JsonRequestBehavior.AllowGet);
        }
    }
}

使用IE測試,會彈出下載存檔提示:

手邊的專案需用IE測試,又不想為了測API切換不同瀏覽器,爬文求解,在stackoverflow找到很棒的解法。其原理是修改Registry,將application/json、text/json兩種Content-Type開啟設定調成與GIF/PNG/HTML一致,改為直接用瀏覽器檢視。

將以下內容存檔為ie-json-fix.reg,在Windows中點擊執行安裝即可完成Registry修改。

Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  
 
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00
 
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

修改後,IE就能會Chrome一樣直接顯示JSON內容囉! It Rocks!


Viewing all articles
Browse latest Browse all 2311

Trending Articles