jquery的ajax编码问题引发error

今天在修改程序的时候,发现jquery的ajax函数在向后台发送中文或者德文等字符的时候会出错。不是返回错误,而是直接跳到error那去了。

先看代码:

$("#btn_save").click(
	function()//save
	{
		var shareName =$("#txt_sharename").val();
		if(shareName !="")
		{
			$("#dialog_wait").dialog("open"); 
			$.ajax({
					url: "/share/rename/",
					type: 'POST',
					data:{"shareName":shareName},
					dataType: 'xml',
					timeout: 50000,
					error: function(){
						$("#dialog_wait").dialog("close"); 
						alert('Error loading XML document');
					},
					success: function(xmldata){
						var errCode = JQXML.getDataForXML($(xmldata),JQXML.ERROR_CODE);
						if(errCode ==0)//success
						{
							//operation success
						}
						else
						{
							//operation failure
						}	
					}
				});
				
		}
		else
		{
                   //no share name
		}
	});

加入成功会跑success那的代码,但是现在偏偏是跑error那的代码,输入中文或者德文会这样,如果是英文则没有这个问题。

初步判定是编码问题,对获取的值进行编码:

//encoding sharename
		var shareName =escape($("#txt_sharename").val());

再次发送,问题解决。

同时,在使用得到的值得时候需要解码:

//decode sharename
	var sharename=unescape($("#txt_sharename").val());

这里加入一些escape的知识:

escape采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。


在加些jquery ajax函数的知识:

ajax() 方法通过 HTTP 请求加载远程数据。

该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。


语法

jQuery.ajax([settings])

更多关于jQuery.ajax()函数的信息,请看http://www.w3school.com.cn/jquery/ajax_ajax.asp



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值