在ajaxSubmit提交表單的配置裡面,增加一個參數,服務器端判斷是否是ajaxSubmit提交過來的表單,是的話就返回“text/html”類型的內容,不是就可以返回“application/json”的。
public void write(String msg,HttpServletResponse response) throws Exception {
PrintWriter write = null;
//response.setContentType("application/text;charset=UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
try {
write = response.getWriter();
write.write(msg);
write.flush();
} catch (IOException e) {
throw new Exception("ajax write error" + e.getMessage());
} finally {
response = null;
if (write != null)
write.close();
write = null;
}
}
把文中注釋的代碼換成response.setContentType("text/html;charset=UTF-8")代碼即可。
從網上找到的說法是:ajaxSubmit會創建隱藏iframe提交的表單,如果服務器返回的是“application/json”類型的數據,IE和Chrome默認是下載文件的,因為內容是返回給了iframe,而不是ajaxSubmit的success方法。在iframe加載了返回結果後,ajaxSubmit的success方法是去讀取iframe的內容來轉換成json對象使用。