關於在ajax中傳遞中文引發的亂碼問題。

測試了下,以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傳遞,這樣就不出現亂碼了。

相關文章
相關標籤/搜索