jquery下传输json数据到后台的问题

vfan140 发布于 2012/03/06 10:09
阅读 4K+
收藏 2

为什么在传输过程中那些特殊字符会被解析成%5D%5B..

代码如下:

function GetRegisterInfo() {
                var user = {
                    email : $(".input_box").eq(0).val(),
                    password : $(".input_box").eq(1).val(),
                    name : $(".input_box").eq(2).val(),
                    sex : $("input[name='sex'][type='radio']:checked").val()
                };
                var $mytabspan = $("#mytab").find(".tab");
                var mytab = new Array();
                for ( var i = 0; i < $mytabspan.length ; i++)
                    mytab.push($mytabspan.eq(i).attr("id"));
                var registerInfo ={"user": user ,"mytab": mytab};

                return registerInfo;
            }

 

    $(".btn").eq(2).click(function() {

                var registerInfo = GetRegisterInfo();
                $.ajax({
                    type : "post",
                    url : "register",
                    contentType:"application/x-www-form-urlencoded",
                    dataType : "json",
                    data : registerInfo,
                    success : function(msg) {
                    }
                });

            });
火狐下看到传输的数据就有很多%5d%5b

加载中
1
leo108
leo108
如果是php,可以url_decode()
0
杨生子
用escape(char)和unescape(char)进行处理,网上例子很多...
0
杨生子
那个是unicode编码...
0
土匪强
土匪强
后台能读出来不就行了……
0
everyx
everyx
如果不指定编码,浏览器会对你要发送的数据进行默认格式的编码,这个编码各个浏览器不一定一样,其实这个只要前后太编码格式一致就OK了,不用在意这个.
0
mark35
mark35

你把 contentType: "application/x-www-form-urlencoded" , 删除掉看看

不过POST数据本来就是会自动编码的

0
匿名t3a
匿名t3a

%5d%5b

是数组的[]

你传的是数组  application/x-www-form-urlencoded 当然变成%5d%5b

0
Andre.Z
Andre.Z
在传输过程中,这些字符本来就是会被编码的,这个是浏览器控制的,你就不知道?后台获取的时候,会根据设置的编码做自动解码的,不需要担心什么。
0
fzxu_05
fzxu_05

引用来自“Andre.Z”的答案

在传输过程中,这些字符本来就是会被编码的,这个是浏览器控制的,你就不知道?后台获取的时候,会根据设置的编码做自动解码的,不需要担心什么。
+1,
返回顶部
顶部