`
yifeng
  • 浏览: 52957 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AJAX基础与实践(六)

    博客分类:
  • Ajax
阅读更多
 

AJAX JSON 发送请求数据

Ø 使用XML 向服务器发送复杂的数据结构,

Ø 通过串连接来创建XML 串并不好,

Ø 这也不是用来生成或修改XML 数据结构的健壮技术。

Ø JSQN 概述

 * JSON XML 的一个替代方法,可以在www.Json.org 找到。

 * JSON 是一种文本格式,它独立于具体语言,

 * 使用了与C 系列语言(C C# JavaScript )类似的约定。

 * JSON建立在以下 两种数据结构基础上,当前几乎所有编程语言都支持这两种数据结构。

两种数据结构

Ø /值对集合。

 * 不同的语言中,它被理解为对象(object),纪录 record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 associative array)。


     

Ø  值的有序表。

 * 这通常实现为一个数组。

JSON的数据结构

Ø JSON对象

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



    

Ø JSON数组

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




Ø 

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



Ø 字符串(string

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

字符串(string)与C或者Java的字符串非常相似。




Ø 数值(number

    * 数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。



Ø 空白可以加入到任何符号之间。 以下描述了完整的语言。

Ø http://www.json.org/能得到JSON

DEMO JSON对象

Ø 我们可以以Employee对象的简单的例子展开进行。

Ø Employee对象可能包含姓、名、员工号和职位等数据。

Ø 使用JSON,可以如下表示Employee对象实例:

var employee = {

 “firstName”:”Zhou”,

 “lastName”:”DaQing”,

 “employeeNumber”:517,

 “title”:”Accountant”

}

Ø 然后可以使用标准点记法使用对象的属性,如下所示:

var lastName = employee.lastName;

var title = employee.title;

employee.employee = 517;

JSONXML

Ø JSON 是一个轻量级的数据互换格式。

Ø 如果用 XML 来描述同样的employee对象,可能如下所示:

<employee>

    <firstName>Zhou</firstName>

    <lastName>DaQing</lastName>

    <employeeNumbe>517</employeeNumbe>

    <title>Accountant</title>

</employee >

Ø 显然,JSON编码比XML 编码简短。

Ø 如果在网络上发送大量数据,可能会带来显著的性能差异。

Ø www.Json.org 网站列出了至少与其他编程语言的14种绑定

Ø 这说明,不论在服务器端使用何种技术,都能通过JSON与浏览器通信。

JSON

Ø 因为这些结构得到了如此众多编程语言的支持,所以JSON 可以作为异构系统之间的一种数据互换格式。

Ø 另外,由于JSON 是基于标准JavaScript 的子集,所以在所有当前Web 浏览器上都应该是兼容的。

DEMO AJAX JSON 发送请求数据

Ø DEMO

 * 使用JSON JavaScript 对象转换为串格式,

 * Ajax 将这个串发送到服务器,

 * 服务器根据这个串创建一个对象.

Ø 撰写“jsonExample.html”,如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

        "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

 <title>JSON Example</title>

   <script type="text/javascript" src="/js/json2.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();

             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",1989,"pink");

        }

        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="Click here to send JSON data to the server" onblur="doJSON();"/>

</form>

   <h2>Server Response:</h2>

<div id="serverResponse"></div>

</body>

</html>

DEMO 服务器端接收JSON数据

Ø 然后撰写“JSONExample.java”文件,内容如下:

package org.yifeng.webapp.servlet;

import org.json.JSONObject;

import org.json.JSONException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.ServletException;

import java.io.IOException;

import java.io.BufferedReader;

import java.text.ParseException;

/**

 * Copyright:       晟软科技

 * WebSit:          http://www.shengruan.com

 * Author:          忆风

 * QQ:              583305005

 * MSN:             YiFengs@msn.com

 * Email:           zhdqCN@gmail.com

 * CreationTime:    2008-8-26 0:49:12

 * Description:

 */

public class JSONExample extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String json = readJSONStringFromRequestBody(request);

        //返回输出结果

        String responseText = null;

        //使用JSON绑字Ajax对象

        JSONObject jsonObject = null;

        try {

            jsonObject = new JSONObject(json);

            responseText = "You have a " + jsonObject.getInt("year") + " "

                    + jsonObject.getString("make") + " " + jsonObject.getString("model")

                    + " " + " that is " + jsonObject.getString("color") + " in color.";

        } catch (JSONException e) {

            e.printStackTrace(); 

        }

        response.setContentType("text/xml");

        response.getWriter().print(responseText);

    }

    private String readJSONStringFromRequestBody(HttpServletRequest request) {

        StringBuilder json = new StringBuilder();

        String line = null;

        try {

            BufferedReader reader = request.getReader();

            while ((line = reader.readLine()) != null) {

                json.append(line);

            }

        } catch (IOException e) {

            System.out.println("Error reading JSON stirng: " + e.toString());

        }

        return json.toString();

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doPost(request, response);

    }

}

Ø 点击按钮,显示如下:

OK,看看,数据都显示出来了吧,呵呵!!!




作者:周大庆(zhoudaqing)
网址:http://www.blogjava.net/yifeng
>>>转载请注明出处!<<<

分享到:
评论

相关推荐

    ajax基础与实践教程(含php json实例)

    在"ajax基础与实践教程(含php json实例)"中,可能包含了如何使用Ajax与PHP结合,通过JSON进行数据交换的详细步骤。例如,创建一个PHP脚本生成JSON数据,然后在JavaScript中创建Ajax请求,解析返回的JSON数据并更新...

    Ajax基础与实践教程(含源码)

    **Ajax基础与实践教程** Ajax,全称Asynchronous JavaScript and XML,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。Ajax的核心是...

    AJAX的综合应用,AJAX基础与实践

    **AJAX基础与实践** AJAX(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下,能够更新部分网页的技术。这种技术的核心在于利用JavaScript创建XMLHttpRequest对象,通过这个对象与服务器进行...

    Ajax模式与最佳实践英文原版

    1. **XMLHttpRequest对象**:Ajax的基础,用于在后台与服务器通信。理解它的生命周期、方法(如open、send、onreadystatechange等)以及状态码是掌握Ajax的关键。 2. **数据格式**:虽然名字中包含XML,但现代Ajax...

    精通Ajax 基础概念.核心技术与典型案例

    ## **一、Ajax基础概念** 1. **异步通信**:Ajax的核心是JavaScript对象XMLHttpRequest,它允许在后台与服务器进行通信,不阻塞用户对页面的操作。 2. **局部刷新**:Ajax可以只更新网页的部分区域,而不是整个页面...

    AJax与PHP基础教程.

    **第一章 - Ajax基础** 在这一章中,你将学习到Ajax的基本概念,包括异步通信的重要性、XMLHttpRequest对象的使用以及如何创建简单的Ajax请求。了解如何通过JavaScript与服务器进行交互,实现页面内容的动态加载,...

    Ajax基础实例讲解

    Ajax(Asynchronous JavaScript and XML)是一种在...Ajax是Web开发中的重要技术,理解并掌握Ajax的基本原理和实践,能帮助你构建更加动态、响应式的网页应用。通过不断练习和项目实战,你可以更好地理解和运用Ajax。

    14ajax课程_AJAX基础_

    **AJAX基础详解** 在现代Web开发中,AJAX(Asynchronous JavaScript and XML)是一种核心技术,它使得网页能够实现异步数据交换,无需刷新整个页面即可更新部分内容。本教程将深入探讨AJAX的基础知识,帮助你理解其...

    AJAX基础教程

    **AJAX基础教程** 在Web开发领域,AJAX(Asynchronous JavaScript and XML)是一种不可或缺的技术,它使得网页可以在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容。本教程将带您深入理解AJAX的基本...

    Ajax 基础教程中文版.pdf

    **Ajax(Asynchronous JavaScript and XML)**是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。...通过阅读"Ajax基础教程中文版",你可以深入了解Ajax的工作原理,学会如何在实践中运用它。

    Ajax基础与实战.jar

    这个名为“Ajax基础与实战.jar”的压缩包,很可能包含了学习和实践Ajax技术的相关资料。 在学习Ajax的基础知识时,你需要了解以下几个关键点: 1. **XMLHttpRequest对象**:这是Ajax的核心,用于在后台与服务器...

    ajax入门基础教程

    在文章的最后部分,作者分享了自己的学习经历,提到了通过与专家的互动以及多次的交流和编程实践,能够更快地深入理解AJAX技术,并掌握相关的开发技巧。这也从另一个侧面强调了实践经验对于学习编程技术的重要性。

    AJAX基础教程-5 Ajax Validate

    **标题:“AJAX基础教程-5 Ajax Validate”** 在学习Web开发时,AJAX(Asynchronous JavaScript and XML)技术是一个重要的组成部分,它允许我们在不刷新整个页面的情况下与服务器进行交互,提升用户体验。本教程...

    Ajax的入门与实践.pdf

    Ajax 入门与实践 Ajax 是基于 XML 的异步 JavaScript, 是当前 Web 创新的重要组成部分。Ajax 这个术语源自描述从基于同页的 Web 应用到基于数据应用的转换。在基于数据的应用中,用户需要的数据,如联系人列表,...

    AJAX基础到精通教程

    **AJAX基础到精通教程** AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,大大提升了用户...

    Ajax基础教程

    **Ajax基础教程** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。这种技术在现代Web开发中被广泛应用,极大地提升了用户体验,因为它允许页面在后台与服务器...

    ajax基础教程和ajax从入门到精通

    **Ajax基础教程** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,提升了用户体验,使得用户在...

    ajax框架与实践

    涵盖Web应用的发展,Ajax基础,Web通讯,XMLHttpRequest对象详解,同时详细讲解和推荐了Ajax开发工具箱,例如JSDoc,Firefox拓展,DOMInspector,JSLint等等,以及JsUnit测试等。同时为了提升前端技术,第八章详细...

    ajax开发技术原理与实践教程

    在提供的"ajax基础与实践源代码"中,你可以找到实际的Ajax代码示例,包括创建请求、发送数据、处理响应等步骤,通过这些代码,你可以更好地理解Ajax的运用。 总结,Ajax技术极大地提升了Web应用的交互性和用户体验...

Global site tag (gtag.js) - Google Analytics