測試了下,以form的形式提交,無論是ie或者google瀏覽器或者火狐都沒出現亂碼狀況。html
而放在jquery
function editMenu() { var menuName = $("#menuName").val(); menuName = encodeURIComponent(menuName); var parentMenu = $("#parentMenu option:selected").val(); var functionId = $("#functionId option:selected").val(); var menuId = $("#menuId").val(); var url = '<%=contextPath%>/menuEditServlet?menuId='+menuId+'&parentMenu='+parentMenu+'&functionId='+functionId+'&menuName='+menuName; $.post(url,function(data){ var result = eval(data); if(result) { $("#result").html("編輯菜單成功"); } else { $("#result").html("編輯菜單失敗"); } }); }
以上面這樣的形式提交的時候,在ie上出現了亂碼。json
解決方案是對中文進行編碼menuName = encodeURIComponent(menuName); 瀏覽器
具體緣由能夠參照以下提問:post
http://www.oschina.net/question/778987_125081 測試
還有這個地方也須要注意了本身是否有設置了google
http://my.oschina.net/u/778987/blog/160066 編碼
2014-2-25更新url
在url上傳遞中文會遇到亂碼問題,那麼就換個思路,使用jquery的post方法的時候,不在url上拼裝參數,直接使用好比下面這個例子.net
function editFunction() { var functionName = $("#functionName").val(); var functionId = $("#functionId").val(); var functionUrl = $("#url").val(); var url = '<%=contextPath%>/functionEditServlet'; var data = { functionId:functionId, functionName:functionName, url:functionUrl } $.post(url,data,function(json){ var result = json.result; if(result) { $("#result").html("編輯功能成功"); } else { $("#result").html("編輯功能失敗"); } },"json"); }
使用$.post(url,data,function())方法,用參數值data傳遞,這樣就不出現亂碼了。