文件上傳返回JSON數據,在IE9下提示下載文件
知識
12-28
在項目開發的時候,遇到一個文件上傳後,在ie9瀏覽器下返回JOSN數據,提示保存下載的問題,圖下圖所示。
原因
upload上傳使用了兩種方式上傳文件。對於支持XMLHTTPRequest文件上傳的瀏覽器,使用XMLHTTPRequest上傳文件,而對於那些不支持XMLHTTPRequest文件上傳的瀏覽器,轉換為iframe來上傳文件。
IE9正屬於不支持XMLHTTPRequest文件上傳瀏覽器之一。
解決思路:
基於iframe上傳文件,對於返回json對象,如果把響應頭的content-type設為"application/json",在ie中會彈出下載文件的提示框。解決這個問題的方式是把響應頭的content-type的值設為"text/plain"或者"text/html"。
解決方案:
- 後台返回json串,而不是json對象,如 return Json(new { state = 1, msg = "" });改為return Content(" {state:1,msg:""}"); 前台ajax接收類型datatype:由json改為text。成功後接收的data轉成json對象即可使用: vardata = eval("(" + data1 + ")");
- 後台依然返回json對象, returnJson(new { state = 1, msg = "" },"text/html");
- 前端不需要改動。
※教你百家號一篇文章就能收益幾百,月入過萬簡簡單單
※艱難但必須學會的談話
TAG:極客教程 |