首页 新闻 会员 周边

Ajax 如何对json数组进行编码 用escape方法 在线等答案

0
悬赏园豆:10 [已解决问题] 解决于 2014-12-19 15:56

如要是利用ajax请求一个页面,将json字符串 进行编码,通过escape方法,这是我写的代码,但是一直不成功,感觉这样写是不对的,但是不知道怎么写


                $.ajax({
                    type: "Post",
                    url: "http://210.51.213.115/PanPass_ZxApi/api/Prize/GetPrizeList",
                    //方法传参的写法一定要对,name为形参的名字,age为第二个形参的名字     
                    data: JSON.stringify(d),
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: escape(data),
                    success: function (data) {
                        //返回的数据用data.d获取内容     
                        window.location.href = "duihuan.html?toal=data.integraltotal&use=data.integraltotal&rema=data.remainintegral";
                    },
                    error: function (err) {
                        $("#lblMsg").html("服务忙!请稍后再试!");
                    }
                });
            });

郭晓丹的主页 郭晓丹 | 初学一级 | 园豆:190
提问于:2014-12-16 12:21
< >
分享
最佳答案
0

ajax参数中有两个data属性,你先删掉第二个,如果还不行的话,那么删掉第二个+修改第一个为: data: escape(JSON.stringify(d))

收获园豆:10
幻天芒 | 高人七级 |园豆:37175 | 2014-12-16 13:24

但是我们经理说 如果对json进行加密 ,一般都是用get方式进行提交,你看一下 ,我这段代码 需要怎么改一下 

 

   $.ajax({
                    type: "Post",
                    url: "http://210.51.213.115/PanPass_ZxApi/api/Prize/GetPrizeList",
                    //方法传参的写法一定要对,name为形参的名字,age为第二个形参的名字     
                    data: escape(JSON.stringify(d))
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: escape(data),
                    success: function (data) {
                        //返回的数据用data.d获取内容     
                        window.location.href = "duihuan.html?toal=" + data.integraltotal + "&use=" + data.integraltotal + "&rema=" + data.remainintegral;
                    },
                    error: function (err) {
                        $("#lblMsg").html("服务忙!请稍后再试!");
                    }
                });

郭晓丹 | 园豆:190 (初学一级) | 2014-12-16 13:28

@郭晓丹: 把第二个data干掉就行了。第二个data是多余的~

幻天芒 | 园豆:37175 (高人七级) | 2014-12-16 13:37

@幻天芒: 恩恩,我看到了,但是我的提交方式 用不用改为get方式?

郭晓丹 | 园豆:190 (初学一级) | 2014-12-16 13:38

@郭晓丹: 这个要看你的后台处理程序,是接收get还是post请求,我测试了一下那个api,发现get,post都是可以的。你可以暂时不用修改试试~

幻天芒 | 园豆:37175 (高人七级) | 2014-12-16 13:41

@幻天芒: 我请求的是我们服务器上的一个地址

郭晓丹 | 园豆:190 (初学一级) | 2014-12-16 13:42

@郭晓丹: 我明白,还有这样的ajax请求写法也是快过时的写法。请参考:

 

$.ajax({
    type: 'post',
    url: 'http://xxx',
    contentType: 'application/json',
    data: 'test',
    dataType: 'json',
    cache: true,
    async: true
}).done(function(data){
    //请求成功时执行,data是请求结果 
}).fail(function(errObj){
    //请求错误时,执行这块
}).complete(function(resObj){
    //不管请求失败还是成功,都会执行。
});
幻天芒 | 园豆:37175 (高人七级) | 2014-12-16 14:42
其他回答(2)
0

使用escapeURIComponent(data)

或者使用escape(escape(data))

乐享程序员 | 园豆:930 (小虾三级) | 2014-12-16 12:38

你能不能在我代码的基础上改一下呀,如果要进行编码,是不是只能用get进行提交

支持(0) 反对(0) 郭晓丹 | 园豆:190 (初学一级) | 2014-12-16 13:06

@郭晓丹: 

方式1(POST、GET):

先将d中的带有汉字的数据使用escapeURIComponent()转换,

然后将d转为JSON数据。

 

var d={name1:value1, name2:value2}

// 数据编码escapeURIComponent(value1)

// d=JSON.stringify(d);

$.ajax{

type:"post",

url:'......./GetPrizeList',

data:d

dataType:'json'

}

=======================================

方式2(GET):

将数据d转为 name=value&name=value这样的拼接的字符串后,在前面加上url。

然后使用两次escape

$.ajax{

type:"get",

url:escape(escape('......./GetPrizeList'+'?'+JSON.stringify(d))),

dataType:'json'

}

 

支持(0) 反对(0) 乐享程序员 | 园豆:930 (小虾三级) | 2014-12-16 14:06
0

data属性有2个,

吴瑞祥 | 园豆:29449 (高人七级) | 2014-12-16 13:15

麻烦说详细一点,我刚接触

支持(0) 反对(0) 郭晓丹 | 园豆:190 (初学一级) | 2014-12-16 13:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册