一般人使用是
jQuery(form).ajaxSubmit({ url: "ajaxsub.aspx?abc=test", type: "post", dataType: "json", success: data });
分析:JQuery的AJAX提交,會將要提交的數據進行編碼,使用encodeURIComponent在js中處理數據。因此,無論是 Firefox或者IE,提交的數據都是一致的,都是UTF-8編碼後的數據。
查看Header,發現Entity中的Content-Type存在差異
在Firefox中,Content-Type指定了字符集為utf-8。
而IE裡面卻沒有任何字符集指定,
顯然,默認情況下,AJAX的異步提交的字符編碼應該和網頁本身保持一致,也就是說,Server端在沒有發現顯示的charset指定的情 況下,使用gb2312來解碼數據(但是數據在提交前已經被UTF-8編碼了),這就是為什麼在IE下會出現亂碼的根源,而在Firefox下,浏覽器在 提交AJAX數據的時候,加上了charset的顯示指定,導致Server端采用UTF-8來解碼數據(正確解碼)。
查閱JQuery的AJAX工具函數的說明,發現options中有一個指定content-type的參數
所以在提交的時候要指定編碼類型
contentType: "application/x-www-form-urlencoded; charset=utf-8",
即如下
jQuery(form).ajaxSubmit({ url: "ajaxsub.aspx?abc=test", type: "post", dataType: "json", contentType: "application/x-www-form-urlencoded; charset=utf-8", success: data });
以上內容給大家分享了如何解決JQuery ajaxSubmit提交中文亂碼,希望對大家有所幫助。