关闭

jquery的ajax编码问题引发error

1216人阅读 评论(0) 收藏 举报

今天在修改程序的时候,发现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



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:83978次
    • 积分:911
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:1篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论