記ie8 掛起問題

    問題現象是這樣的:我的後臺servlet程序發生異常時,我想捕獲異常返回給用戶友好的信息,在ie8下通過F12調試“網絡”-“捕獲”發現請求的狀態是“掛起”,然後瀏覽器就掛了。

後臺代碼:

    

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {
	log.error(e.getMessage(), e.getCause());
        PrintWriter writer;
		try {
			writer = response.getWriter();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String errorText = ""; 
            // some code ...
            writer.println("{\"success\":\"N\",\"msg\":\"" + errorText + "\"}");
            writer.flush();
		} catch (IOException e1) {
			log.error("連接出錯,無法寫響應: " + e1.getMessage(), e1.getCause());
		}


前臺代碼:

// 上傳ajax提交
$('#form_upload').ajaxSubmit({
	       url: url,
				type: 'post',
				//dataType: 'json',
				dataType: 'text',
				async: false,
				success: function(dataText) {
				    //some code...
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
				},
				complete: function(xhr) {
				}
			});


這個功能是導入excle文件的,在ie10、火狐下沒問題,但是ie8 9都不行,開始我以爲是js庫的問題,把jquery、jquery form的版本都換了,問題沒解決。又懷疑是ie8下iframe的問題,鼓搗半天還是不對。最後通過ie的F12發現,響應有內容,沒有頭,原來是服務器沒有寫響應頭,導致ie8無限掛起進入永恆。。。

解決:servlet代碼加上下面三句即可了

        response.setStatus(200);
        response.setContentType("text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章