六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 25|回复: 0

Ajax---通过JSON与服务器通信(发送请求和处理响应)

[复制链接]

升级  39.33%

25

主题

25

主题

25

主题

秀才

Rank: 2

积分
109
 楼主| 发表于 2013-1-23 02:41:44 | 显示全部楼层 |阅读模式
通过JSON(JavaScript Object Notation)向服务器发送数据。它是一种轻量级的数据交换格式,使用了类似于C语言家族的习惯。


JSON具有以下这些形式:

a :  对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

b:   数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

c:   值(value)可以是双引号括起来的字符串(string)、数值(number)、 ture、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

d:   字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

不多说了,关于JSON其实在 www.json.org 上讲得太好了!上面不但有每个JAVA的源文件,而且每个文件都有与之对应的JAVA DOC!还有不少实例!

我就选了json in java  and  json in javascript 二个链接 ,从这二个地方可以下到JSON的javascript包和Java包。

Javascript 包的应用如下:
首先创建一个符合json的对象,并通过XHP发送到sever
< script type = " text/javascript "  src = " json.js " ></ script > < script type = " text/javascript " >  var  xmlHttp;function  createXMLHttpRequest()   {     if  (window.ActiveXObject)   {        xmlHttp  =   new  ActiveXObject( " Microsoft.XMLHTTP " );    }       else   if  (window.XMLHttpRequest)   {        xmlHttp  =   new  XMLHttpRequest();    } }     function  doJSON()   {     var  car  =  getCarObject();         // Use the JSON JavaScript library to stringify the Car object       var  carAsJSON  =  JSON.stringify(car);      alert( " Car object as JSON:\n  "   +  carAsJSON);         var  url  =   " JSONExample?timeStamp= "   +   new  Date().getTime();        createXMLHttpRequest();    xmlHttp.open( " POST " , url,  true );    xmlHttp.onreadystatechange  =  handleStateChange;    xmlHttp.setRequestHeader( " Content-Type " ,  " application/x-www-form-urlencoded " );        xmlHttp.send(carAsJSON);}     function  handleStateChange()   {     if (xmlHttp.readyState  ==   4 )   {         if (xmlHttp.status  ==   200 )   {            parseResults();        }     } }  function  parseResults()   {     var  responseDiv  =  document.getElementById( " serverResponse " );     if (responseDiv.hasChildNodes())   {        responseDiv.removeChild(responseDiv.childNodes[ 0 ]);    }          var  responseText  =  document.createTextNode(xmlHttp.responseText);    responseDiv.appendChild(responseText);}  function  getCarObject()   {     return   new  Car( " Dodge " ,  " Coronet R/T " ,  1968 ,  " yellow " );}  function  Car(make, model, year, color)   {     this .make  =  make;     this .model  =  model;     this .year  =  year;     this .color  =  color;}  </ script > 那个json.js就是我们下下来的包啦!

我们再看看在server端的处理

package  ajaxbook.chap3; import  java.io. * ; import  java.net. * ; import  java.text.ParseException; import  javax.servlet. * ; import  javax.servlet.http. * ; import  org.json.JSONObject; public   class  JSONExample  extends  HttpServlet   {         protected   void  doPost(HttpServletRequest request, HttpServletResponse response)     throws  ServletException, IOException   {        String json  =  readJSONStringFromRequestBody(request);                 // Use the JSON-Java binding library to create a JSON object in Java          JSONObject jsonObject  =   null ;         try    {            jsonObject  =   new  JSONObject(json);        }           catch (ParseException pe)   {            System.out.println( " ParseException:  "   +  pe.toString());        }                 String responseText  =   " You have a  "   +  jsonObject.getInt( " year " )  +   "   "              +  jsonObject.getString( " make " )  +   "   "   +  jsonObject.getString( " model " )             +   "   "   +   "  that is  "   +  jsonObject.getString( " color " )  +   "  in color. " ;                response.setContentType( " text/xml " );        response.getWriter().print(responseText);    }        private  String readJSONStringFromRequestBody(HttpServletRequest request)  {        StringBuffer json  =   new  StringBuffer();        String line  =   null ;         try    {            BufferedReader reader  =  request.getReader();             while ((line  =  reader.readLine())  !=   null )   {                json.append(line);            }         }           catch (Exception e)   {            System.out.println( " Error reading JSON string:  "   +  e.toString());        }          return  json.toString();    } }  
org.json.JSONObject是从JSON.ORG上下下来的JAVA包!它上面也有JSONObject的JAVA DOC.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表