初识JSON(二)

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CtuxWang%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">

JSON很方便,而且JavaScript很容易解析这种数据格式。可以用JSON 替换xml 与服务器端进行数据交换,或者说传输数据!相比xml 来说,JSON就比较简单而且容易生成。

当然,最主要的就是如何发送请求与处理请求了,还有就是如何将各种数据类型转换成JSON格式串。上网查了些与服务器端交互的资料,在这里做一个总结吧-_-

      肯定得得到一个 XMLHttpRequest 对象,顺便加上我们下载下来的 json.js
  1. <script language=”text/javascript” src=”js/json.js”></script>
  2. <script language=”text/javascript”>
  3. var  xmlHttp;

  4. function  createXMLHttpRequest(){
  5.               if (window.ActiveXObject){
  6.                     xmlHttpRequest =new ActiveXObject( " Microsoft.XMLHTTP " );
  7.               }else if (window.XMLHttpRequest) {
  8.                     xmlHttpRequest = new XMLHttpRequest();
  9.              }
  10.  }

  11. function doPost(){   // 有一个发出请求的JavaScript 函数
  12.             var stu = getStudent();
  13.             var stuJsonString = JSON.stringify(stu); // Or stu.toJSONString();          
  14.             alert(stuJsonString);
  15.             var requestUrl = "JsonTest?timeStamp=" + new Date().getTime();   // 加上timeStamp确保不会在第一次发出请求后
  16.                                                                                                                           // 缓存,每次被调用后都会重新创建和重发
  17.             alert(requestUrl); 
  18.             
  19.             createXMLHttpRequest();
  20.             xmlHttpRequest.open("post" , requestUrl , true);
  21.             xmlHttpRequest.onreadystatechange = handleStateChange;
  22.             xmlHttpRequest.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
  23.             xmlHttpRequest.send(stuJsonString);
  24. }

  25. function handleStateChange(){ 
  26.             if(xmlHttpRequest.readyState == 4){
  27.                 if(xmlHttpRequest.status == 200){
  28.                     parseResult();
  29.                 }
  30.             }
  31. }

  32. function parseResult(){
  33.             var responsediv = document.getElementById("resultdiv");
  34.             if(responsediv.hasChildNodes()){
  35.                 responsediv.removeChild(responsediv.childNodes[0]);
  36.             }
  37.             var responseText = document.createTextNode(xmlHttpRequest.responseText);
  38.             responsediv.appendChild(responseText);       // 就让简单显示下响应的内容
  39.         }
  40.         
  41.         
  42.         function Student(name,stuclass,age){
  43.             this.name = name;
  44.             this.stuclass = stuclass;
  45.             this.age = age;
  46.         }
  47.         
  48.         function getStudent(){
  49.             return new Student("Xiao Wang""Class One",23);
  50.         }
  51. </script>

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CtuxWang%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C04%5Cclip_filelist.xml">

    客户端的JavaScript脚本差不多就这么多了,然后页面中有一个显示结果的层:              

  1. <div id=”resultdiv”></div>
    服务器端代码:这里只测试了 Java( 我这会儿也只会 Java) JSON 本身是支持很多语言的。

    以下是ServletdoPost()方法的代码:   

  1. public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2.         String jsonString = null;
  3. StringBuffer json = new StringBuffer();
  4.         String line = null;
  5.         try{
  6.             BufferedReader reader = request.getReader();
  7.             while((line = reader.readLine()) != null){
  8.                 json.append(line);
  9.             }
  10.         }catch(Exception e){
  11.             System.out.println("Error reading JSON string : " + e.toString());
  12.         }
  13.         jsonString = json.toString();
  14.             JSONObject jsonObject = null;
  15.             try{
  16.                 jsonObject = new JSONObject(json);              
  17.             }catch (JSONException e) {
  18.                 // TODO Auto-generated catch block
  19.                 e.printStackTrace();
  20.             }
  21.             String responseText = jsonObject.getString();;
  22.             response.setContentType("text/xml");
  23.             response.getWriter().print(responseText);
  24.     }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值