热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ajax与JSON的使用

终于通过学习自己写出多级分组的json并应用到目录树下了。!DOCTYPEhtmlPUBLIC-//W3C//DTDXHTML1.0Transitional//ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdhtmlxmlnshttp://www.w3.

终于通过学习自己写出多级分组的json并应用到目录树下了。








--------------

生成对应JSON的jsp

--------------

<%@ page cOntentType="text/html; charset=gbk" language="java" errorPage="" %>
<%@ page language="java" import="java.io.PrintWriter"%>

<%
    response.setHeader("Cache-Control", "no-cache");
response.setCharacterEncoding("gbk");
PrintWriter xmlout = response.getWriter();
int start = 0;
int limit = 2;
//int limit = (int) (Math.random() * 10*10);
//System.out.println(limit);

String url = "http://www.baidu.com";
String target = "_blank";
StringBuffer sb = new StringBuffer();

sb.append("{root:[");

sb.append("{study:[{'NodeName': '招商研究'},");
for (int i=start;i {
   sb.append("{'NodeName':'");
   if(Math.floor(Math.random() * 100)>50)
   {
    sb.append("个股研究");
   }
   else
   {
    sb.append("大盘研究");
   }
   sb.append("','NodeLink':'");
   sb.append(url);
   sb.append("','NodeTarget':'");
   sb.append(target);
   sb.append("'}");
   if(i!=limit-1){
    sb.append(",");
   }
   else
   {
    sb.append("]},");
   }
}

sb.append("{magazine:[{'NodeName': '客户杂志'},");
for (int i=start;i {
   sb.append("{'NodeName':'");
   if(Math.floor(Math.random() * 100)>50)
   {
    sb.append("最新杂志");
   }
   else
   {
    sb.append("推荐文章");
   }
   sb.append("','NodeLink':'");
   sb.append(url);
   sb.append("','NodeTarget':'");
   sb.append(target);
   sb.append("'}");
   if(i!=limit-1){
    sb.append(",");
   }
   else
   {
    sb.append("]},");
   }
}

sb.append("{info:[{'NodeName': '市场信息'},");
for (int i=start;i {
   sb.append("{'NodeName':'");
   if(Math.floor(Math.random() * 100)>50)
   {
    sb.append("利好信息");
   }
   else
   {
    sb.append("熊市信息");
   }
   sb.append("','NodeLink':'");
   sb.append(url);
   sb.append("','NodeTarget':'");
   sb.append(target);
   sb.append("'}");
   if(i!=limit-1){
    sb.append(",");
   }
   else
   {
    sb.append("]},");
   }
}

sb.append("{monitor:[{'NodeName': '后台监控'},");
for (int i=start;i {
   sb.append("{'NodeName':'");
   if(Math.floor(Math.random() * 100)>50)
   {
    sb.append("委托监控");
   }
   else
   {
    sb.append("自主监控");
   }
   sb.append("','NodeLink':'");
   sb.append(url);
   sb.append("','NodeTarget':'");
   sb.append(target);
   sb.append("'}");
   if(i!=limit-1){
    sb.append(",");
   }
   else
   {
    sb.append("]}");
   }
}
sb.append("]}");

String rs = sb.toString();
System.out.println(rs);

try
{
   xmlout.write(rs);
}
catch (Exception e)
{
   e.printStackTrace();
}
finally
{
   xmlout.flush();
   xmlout.close();
}
%>

-------------------

JSON (Javascript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 Javascript
原生格式,这意味着在 Javascript 中处理 JSON 数据不需要任何特殊的 API 或工具包。 JSON的规则很简单:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’
对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html
举个简单的例子:
js 代码:
function showJSON() {

var user
=  

    {    

       "username":"andy",

       "age":20,

       "info": {
"tel": "123456", "cellphone": "98765"},

   
"address":

   
       [

                {"city":"beijing","postcode":"222333"},

                {"city":"newyork","postcode":"555666"}

   
       ]

    }

  
alert(user.username);

    alert(user.age);

  
alert(user.info.cellphone);

    alert(user.address[0].city);

    alert(user.address[0].postcode);

}

这表示一个user对象,拥有username,
age, info, address 等属性。
同样也可以用JSON来简单的修改数据,修改上面的例子
js

function showJSON() {
var user =    
    {  

       "username":"andy",
       "age":20,
       "info": {
"tel": "123456", "cellphone": "98765"},
"address":
    [
    {"city":"beijing","postcode":"222333"},
    {"city":"newyork","postcode":"555666"}
    ]
    }
    alert(user.username);
alert(user.age);
    alert(user.info.cellphone);
alert(user.address[0].city);
    alert(user.address[0].postcode);

      
    user.username =
"Tom";
alert(user.username);
}

JSON提供了json.js包,下载http://www.json.org/json.js
后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。(注意:如果是2005左右的json.js,方法是不同的,JSON.stringify(object)的)
js 代码
function showCar() {

var carr
=
new Car("Dodge",
"Coronet R/T", 1968, "yellow");
alert(carr.toJSONString());
}

function Car(make,
model, year, color)        {
    this.make   = make;
this.model   = model;
    this.year   = year;
this.color   = color;
}

可以使用eval来转换JSON字符到Object
js

function myEval() {
var str =
'{
"name": "Violet", "occupation": "character" }';

var obj = eval('('
+ str
+
')');

//eval方法是js内置的方法不需要引入任何外部js文件就可以使用了,可以直接把json文件转换成对象使用
      alert(obj.toJSONString());
}

或者使用parseJSON()方法
js
function myEval() {
var str =
'{ "name": "Violet", "occupation":
"character" }';
var obj = str.parseJSON();
alert(obj.toJSONString());
}   

===========================

JSON (Javascript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 Javascript 原生格式,这意味着在 Javascript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

JSON的规则很简单: 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html

举个简单的例子:

程序代码


function showJSON() {    
     var user =    
     {    
"username":"andy",    
"age":20,    
         "info": { "tel": "123456", "cellphone": "98765"},    
"address":    
[    
{"city":"beijing","postcode":"222333"},    
{"city":"newyork","postcode":"555666"}    
]    
     }    
alert(user.username);    
alert(user.age);    
alert(user.info.cellphone);    
alert(user.address[0].city);    
alert(user.address[0].postcode);    
}    


这表示一个user对象,拥有username, age, info, address 等属性。

同样也可以用JSON来简单的修改数据,修改上面的例子

程序代码


function showJSON() {    
     var user =    
     {    
"username":"andy",    
"age":20,    
         "info": { "tel": "123456", "cellphone": "98765"},    
"address":    
[    
{"city":"beijing","postcode":"222333"},    
{"city":"newyork","postcode":"555666"}    
]    
     }    
alert(user.username);    
alert(user.age);    
alert(user.info.cellphone);    
alert(user.address[0].city);    
alert(user.address[0].postcode);    
     user.username = "Tom";    
alert(user.username);    
}    


JSON提供了json.js包,下载http://www.json.org/json.js 后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。

程序代码


function showCar() {    
     var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");    
alert(carr.toJSONString());    
}    
function Car(make, model, year, color)       {    
     this.make   =   make;    
     this.model   =   model;    
     this.year   =   year;    
     this.color   =   color;    
}    


可以使用eval来转换JSON字符到Object

程序代码


function myEval() {    
     var str = '{ "name": "Violet", "occupation": "character" }';    
     var obj = eval('(' + str + ')');    
alert(obj.toJSONString());    
}    


或者使用parseJSON()方法

程序代码


function myEval() {    
     var str = '{ "name": "Violet", "occupation": "character" }';    
     var obj = str.parseJSON();    
alert(obj.toJSONString());    
}    


下面使用prototype写一个JSON的ajax例子。

先写一个servlet (我的是servlet.ajax.JSONTest1.java)就写一句话

程序代码


response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }");  


再在页面中写一个ajax的请求

程序代码


function sendRequest() {    
     var url = "/MyWebApp/JSONTest1";    
     var mailAjax = new Ajax.Request(    
url,    
{    
method: 'get',    
onComplete: jsonResponse    
}    
     );    
}    
function jsonResponse(originalRequest) {    
alert(originalRequest.responseText);    
     var myobj = originalRequest.responseText.parseJSON();    
alert(myobj.name);    
}    


prototype-1.5.1.js中提供了JSON的方法,String.evalJSON(), 可以不使用json.js, 修改上面的方法

程序代码


function jsonResponse(originalRequest) {    
alert(originalRequest.responseText);    
     var myobj = originalRequest.responseText.evalJSON(true);    
alert(myobj.name);    
}    


JSON还提供了java的jar包 http://www.json.org/java/index.html API也很简单,下面举个例子

在Javascript中填加请求参数

程序代码


function sendRequest() {    
     var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");    
     var pars = "car=" + carr.toJSONString();    
     var url = "/MyWebApp/JSONTest1";    
     var mailAjax = new Ajax.Request(    
url,    
{    
method: 'get',    
parameters: pars,    
onComplete: jsonResponse    
}    
     );    
}    


使用JSON请求字符串就可以简单的生成JSONObject并进行解析,修改servlet添加JSON的处理(要使用json.jar)

程序代码


private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {    
         String s3 = request.getParameter("car");    
         try {    
JSONObject jsOnObj= new JSONObject(s3);    
System.out.println(jsonObj.getString("model"));    
System.out.println(jsonObj.getInt("year"));    
         } catch (JSONException e) {    
e.printStackTrace();    
}    
response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }");    
     }    


同样可以使用JSONObject生成JSON字符串,修改servlet

程序代码


private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {    
         String s3 = request.getParameter("car");    
         try {    
JSONObject jsOnObj= new JSONObject(s3);    
System.out.println(jsonObj.getString("model"));    
System.out.println(jsonObj.getInt("year"));    
         } catch (JSONException e) {    
e.printStackTrace();    
}    
         JSONObject resultJSON = new JSONObject();    
         try {    
resultJSON.append("name", "Violet")    
.append("occupation", "developer")    
.append("age", new Integer(22));    
System.out.println(resultJSON.toString());    
         } catch (JSONException e) {    
e.printStackTrace();    
}    
response.getWriter().print(resultJSON.toString());    
     }    


程序代码


function jsonResponse(originalRequest) {    
alert(originalRequest.responseText);    
     var myobj = originalRequest.responseText.evalJSON(true);    
alert(myobj.name);    
alert(myobj.age);    
}  



推荐阅读
author-avatar
loy1231998
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有