jquery的ajax请求servlet与响应

    在公司的项目中用jquery很久,一直没错,今天突然自己想让jquery请求servlet,然后让servlet返回一个字符串,起初我怀疑不是json格式的数据,前端的js不接受不是json格式的数据,后来,自己拼了一个json格式的字符串,意想不到的事发生了,前端的js的jquery回调函数还是取不到数据,仔细研究一番,终于发现了问题的症结。

   开始,我在项目的servlet直接out.print("test"); 结果前端的js没有反应,我想可能是out.print()里边的数据不是json格式的,接下来自己拼了个json格式的数据,就是下边这个:

"[{'age':'40','name':'张翠山','sex':'男'}," +  "{'age':'109','name':'张三丰','sex':'男'}]"; 我觉得这个应该是json格式的数据了吧,但是,让我十分纳闷的是前端的js的回调函数还是没有反应。

    接下来,我找了将数据格式化为json格式的工具及其相关的jar包,数据json格式化所需的jar包如下:

                  commons-beanutils-1.8.3.jar

                  commons-collections-3.2.1.jar

                  commons-lang-2.5.jar

                  commons-logging-1.1.1.jar

                  ezmorph-1.0.6.jar

                  json-lib-2.3-jdk15.jar

     以上jar包是将数据json格式化的必须的,缺一不可,否则运行时,程序报classnotfound exception,之后我将上边json里边的两条数据封装成对象,然后放到一个泛型list列表里边,用下边的语句将List数据json化:test=JSONArray.fromObject(slist).toString(); 然后让程序运行,这回前端的JS回调有了剧烈反应,终于有反应了,但是程序给的json串让我难以理解:  [{"age":"40","name":"张翠山","sex":"男"},{"age":"109","name":"张三丰","sex":"男"}],难道" ' "这个符号前端的Js不认识吗?经过反复尝试,我可以下结论,果然,jquery请求servlet,servlet响应的数据可以是json或xml,但是json我肯定的是必须是:[{"age":"40","name":"张翠山","sex":"男"},{"age":"109","name":"张三丰","sex":"男"}]这种样式的。

    难道为了用jquery发起ajax请求,还得必须引用那么多jar包吗?我看了一下2M多,不小。

    其实,不必引入数据json专门格式化的,我们可以自己拼json格式的数据,但是程序又不识别“ ' ”,怎么办?有办法,用转义符"\",这回转义符号起到了决定性作用,拼好的数据如下:"[{\"age\":\"40\",\"name\":\"张翠山\",\"sex\":\"男\"}," +  "{\"age\":\"109\",\"name\":\"张三丰\",\"sex\":\"男\"}]"; 虽然数据丑了点,但是不用引入那么多jar包就可以数据格式化为json格式的了。

   再回到自己的那个问题,那就可以将test字符串一个数据拼成json格式的再out.print(),就可以完成jquery的ajax的请求了。

                 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值