posts - 495,comments - 227,trackbacks - 0
          提交數(shù)據(jù)使用json代替xml

          ??? 頁面:jsonExample.jsp

          <%@ page contentType="text/html; charset=GBK" %>
          <html>
          <head>
          <title>
          JSON示例
          </title>
          <script type="text/javascript" src="zxml.src.js"></script>
          <script type="text/javascript" src="json.js"></script>
          <script type="text/javascript">
          ?var xmlHttp;
          ???????
          ??????? //創(chuàng)建對(duì)象
          ??????? function createXMLHttpRequest(){
          ??????? ?xmlHttp = zXmlHttp.createRequest();
          ??????? }
          ???????
          ??????? function doJSON(){
          ????????? ?//得到Car對(duì)象
          ??????? ?var car = getCarObject();
          ???????????????
          ??????????????? //用JSON字符串化car對(duì)象
          ??????????????? var carAsJSON = car.toJSONString();
          ??????????????? alert("汽車對(duì)象JSON化為:\n" + carAsJSON);
          ???????????????
          ??????????????? var url = "JSONExample?timeStamp=" + new Date().getTime();
          ???????????????
          ??????????????? //創(chuàng)建對(duì)象
          ??????????????? createXMLHttpRequest();
          ??????????????? xmlHttp.open("POST",url,true);
          ??????????????? xmlHttp.onreadystatechange = handleStateChange;
          ??????????????? xmlHttp.setRequestHeader("Content-Type","application/x-www-form.urlencoded");
          ??????????????? xmlHttp.send(carAsJSON);
          ??????? }
          ???????
          ??????? //回調(diào)方法
          ??????? function handleStateChange(){
          ??????? ?if (xmlHttp.readyState == 4){
          ??????????????? ?if (xmlHttp.status == 200){
          ??????????????????????? ?parseResults();
          ??????????????????????? }
          ??????????????? }
          ??????? }
          ???????
          ??????? //解析結(jié)果
          ??????? function parseResults(){
          ??????? ?var responseDiv = document.getElementById("serverResponse");
          ??????????????? if (responseDiv.hasChildNodes()){
          ??????????????? ?responseDiv.removeChild(responseDiv.childNode[0]);
          ??????????????? }
          ???????????????
          ??????????????? var responseText = document.createTextNode(xmlHttp.responseText);
          ??????????????? responseDiv.appendChild(responseText);
          ??????? }
          ???????
          ??????? //得到Car對(duì)象
          ??????? function getCarObject(){
          ??????? ?return new Car("Dodge","Coronet R/T",1968,"yellow");
          ??????? }
          ???????
          ???????
          ??????? //Car構(gòu)造函數(shù)
          ??????? function Car(make,model,year,color){
          ??????? ?this.make = make;
          ??????????????? this.model = model;
          ??????????????? this.year = year;
          ??????????????? this.color = color;
          ??????? }
          </script>
          </head>
          <body>
          <br /><br />
          <form action="#">
          ? <input type="button" value="發(fā)送JSON數(shù)據(jù)" onclick="doJSON();"/>
          </form>
          <h2>
          ? 服務(wù)器響應(yīng):
          </h2>
          <div id="serverResponse">
          </div>
          </body>
          </html>

          ??? 服務(wù)器:JSONExample.java

          package ajaxbook.chap4;

          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 {
          ? //處理Post方法
          ? protected void doPost(HttpServletRequest request,
          ??????????????????????? HttpServletResponse response) throws ServletException,
          ????? IOException {
          ??? String json = readJSONStringFromRequestBody(request);

          ??? //使用JSON綁字Ajax對(duì)象
          ??? JSONObject jsonObject = null;
          ??? try {
          ????? jsonObject = new JSONObject(json);
          ??? }
          ??? catch (ParseException pe) {
          ????? System.out.println("ParseException: " + pe.toString());
          ??? }

          ??? //返回輸出結(jié)果
          ??? 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);
          ? }

          ? //得到參數(shù)
          ? 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();
          ? }
          }

          ?

          注意:要引入json.js和json的源文件,使用json.jar不行,源文件參見書籍源代碼第三章

          參考:Ajax基礎(chǔ)教程? 作筆記吧?



          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=975204

          posted on 2006-12-31 16:52 SIMONE 閱讀(2088) 評(píng)論(0)  編輯  收藏 所屬分類: JSPAJAX
          主站蜘蛛池模板: 迁西县| 通道| 延长县| 蓝田县| 临江市| 磴口县| 武穴市| 锡林浩特市| 宕昌县| 定襄县| 大连市| 滁州市| 罗山县| 自治县| 澎湖县| 莱阳市| 湖口县| 如东县| 宿迁市| 沈阳市| 大埔区| 忻州市| 黑龙江省| 深水埗区| 洛南县| 禹城市| 十堰市| 呼图壁县| 商水县| 方山县| 衡阳市| 石景山区| 柳江县| 枣强县| 恩平市| 和田市| 柳河县| 霍山县| 九江县| 章丘市| 黄陵县|