- 浏览: 175053 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (186)
- [网站分类]4.其他技术区 (93)
- [网站分类]6.转载区(Java技术文章转载, 请注明原文出处) (4)
- [网站分类]3.非技术区 (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (28)
- HTML&CSS (0)
- 感悟生活 (4)
- c#(.net) (1)
- [网站分类]2.Java新手区 (32)
- [网站分类]5.提问区(Java方面的技术提问) (1)
- java (6)
- web前端 (7)
- php (0)
- C++ (1)
- python (0)
- 互联网应用 (0)
最新评论
-
lliiqiang:
请求单线程资源只能等待结果.
Applet 与JS通信 -
feng2qin:
期待你的精彩回到。QQ:864479410
Applet 与JS通信 -
feng2qin:
我想问一句;哥们儿,applet程序中调用js,你真的成功了嘛 ...
Applet 与JS通信 -
lyaixsp:
...
ExtJS 入门学习之 window与panel篇 -
longzijian:
不知道 java-he 现在找到数组的这种特性 的原因在那里
和网友关于javascript数组的讨论
AJAX 愉快之旅—— prototype.js 篇 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
对于什么是 ajax 等初级问题,不在本文讨论范围,本文主要围绕一个框架,以程序实例进行了详细总结。由于本人水平所限,所以不完善的地方很多。大家可以跟帖提醒。
以前用 jsp ,我用过 prototype.js 作 ajax 框架,也用过 dwr 框架,还用过 buffalo 框架。但是现在项目使用 php 开发,我才再一次重新认识这位老朋友—— prototype.js 。我想说这个开源框架真是太棒了!
(1) 取数据的时候显示一个进度 loading 。
Ajax . Responders . register 注册后,在 ajax 发送 xmlhttp 时候,响应两事件。 onCreate ,
onComplete 非常棒。可以先写好一个小小的 div 隐藏在那里,伺机而动, J !
var AjaxLog = {
onCreate : function ()
{
Ajax . activeRequestCount ++;
$ ( "Div_Ajax_Log" ). style . top = document . body . scrollTop + 230 ;
$ ( "Div_Ajax_Log" ). style . left = document . body . scrollLeft + document . body . clientWidth / 3 ;
$ ( "Div_Ajax_Log" ). style . display = "" ;
},
onComplete : function ()
{
Ajax . activeRequestCount --;
$ ( "Div_Ajax_Log" ). style . display = "none" ;
}
};
Ajax . Responders . register ( AjaxLog );
而 Div_Ajax_Log 是 DIV id . 其代码:(当然还有一些 CSS 什么的就没有帖出来了。)
(2) 对 json 支持非常好
function setLogDate ()
{
var count = getPram ();
var url = "ajax.php" ;
var kptl=
{
get_log_cmd:
{
log_type:"file",
log_time_start:"1122",
log_time_end:"1122",
log_count_page:"30",
log_request_page:"1",
userSession :"hhh",
mode_id:"1001"
}
}
// 将 json 参数 转化为字符串
var parm = Object.toJSON(kptl);
// parm = "kptl = " + parm;
try
{
var <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?><city w:st="on"><place w:st="on"><span style="COLOR: black">ajax</span> </place></city> = new Ajax . Request (
url ,
{
method : "post" ,
parameters : parm ,
encodeURI : 'UTF-8' ,
encodeURIComponent : "UTF-8" ,
onComplete : showReturn
});
}
catch ( e )
{
alert ( " 创建 ajax 对象失败 " );
}
}
/*
* @brief: 回调函数
* @param: xmlhttp 对象
*/
function showReturn ( obj )
{
try
{
var json = obj . responseText ;
var mydata = json.evalJSON();
createLogTab ( mydata );
}
catch ( e )
{
alert ( "Error:" + e . message );
}
}
红色字体将返回字符串转换为 JSON 。
这里返回的数据作为参数,调用 createLogTab ( mydata ); 由于我这里是返回一个数组。 web 页面写成一个 tablie 。所以有 createLogTab 函数。
function createLogTab ( json )
{
var len = json . length ;
var tbody = document . getElementById ( 'TBODY_log' );
// 删除原有数据
var _tr = tbody . getElementsByTagName ( "tr" );
while ( _tr . length != 0 )
{
// 用 _tr [ 0 ]. parentNode 才能保证每次取到正确的子节点
_tr [ 0 ]. parentNode . removeChild ( _tr [ 0 ]);
}
for ( i = 0 ; i < len ; i ++)
{
var td_0 = document . createElement ( 'td' );
var td_1 = document . createElement ( 'td' );
var td_2 = document . createElement ( 'td' );
var td_3 = document . createElement ( 'td' );
var td_4 = document . createElement ( 'td' );
var td_5 = document . createElement ( 'td' );
td_0 . innerHTML = json [ i ][ "client_name" ];
td_1 . innerHTML = json [ i ][ "client_ip" ];
td_2 . innerHTML = json [ i ][ "file_name" ];
td_3 . innerHTML = json [ i ][ "viruses_name" ];
td_4 . innerHTML = json [ i ][ "infection_time" ];
td_5 . innerHTML = json [ i ][ "clear_result" ];
var tr = document . createElement ( 'tr' );
tr . appendChild ( td_0 );
tr . appendChild ( td_1 );
tr . appendChild ( td_2 );
tr . appendChild ( td_3 );
tr . appendChild ( td_4 );
tr . appendChild ( td_5 );
tbody . appendChild ( tr );
}
}
题外话,这个 DOM 编程部分曾犯了个经典错误。主要是 while 删除子节点部分,当时用了 for 语句:
for(k=0; k<_tr.length;k++)
{
alert("k:"+k);
_tr[k].parentNode.removeChild(_tr[k]);
}
知道是什么错误吗?呵呵,因为 _tr.length 在不停的变。每次删一个就长度就少了(而 K 很快到达停止循环的条件)。所以最终都是删不干净的。
(3) 替换整个节点控件
<script>
function getHTML()
{
var url = 'http://yourserver/app/getSomeHTML';
var pars = 'someParameter=ABC';
var myAjax = new Ajax.Updater('placeholder', url, {method: 'get', parameters: pars});
}
</script>
<input type=button value=GetHtml onclick="getHTML()">
<div id="placeholder"></div>
这个非常好玩,眨眼间整体 DIV 都变了。我记得曾经犯了个错,就是参数。这里参数别写多了。
有问题可以访问官方网站:
http://www.prototypejs.org/ 【下载一本手册吧,呵呵】
当然对本有新的想法或者疑问,欢迎留言交流。
发表评论
-
图象缓冲
2007-02-07 09:45 771图象缓冲的应用双缓冲绘图:<!--<br>& ... -
检验邮箱
2007-02-08 09:46 802<!--<br><br> ... -
批处理命令总结
2007-02-08 16:52 715批处理命令总结:@ 符号后 的命 ... -
学习UML笔记
2007-02-27 17:30 772学习 UML 笔记 前言 为了自己能快速将 UML ... -
blog加上一个同页面浏览者聊天室代码
2007-05-23 10:17 732都是用的别人提供的服务。哈哈。<script type= ... -
常见网页技巧
2007-06-10 16:32 5751.鼠标移动上去,图片变亮,移开又变成灰色。改变的是透明度。 ... -
javascript 数组排序
2007-07-01 03:16 736javascript 数组排序发现一个我原来不知道的事情: ... -
javascript 在客户端绘制图表系列三——xy坐标曲线图
2007-07-01 04:31 1349系列1、2中介绍过的内容在这里不会赘述。原理同面1、2基本一样 ... -
搭建php的运行环境
2007-07-31 18:50 905配置 php 环境 ... -
从网页导出excel
2007-08-09 21:36 746<?xml:namespace ... -
简单日期下拉框
2007-08-09 22:13 856项目中用到一个级联、动态下拉选择日期框。我以前也收集 ... -
php学习笔记1
2007-08-22 22:36 828前面总结过 ... -
php学习笔记2
2007-08-23 23:33 734主要内容:总结了第四章,主要关于字符串处理。参考书籍 ... -
分享一个表格排序程序
2007-08-23 23:46 672应广大网友要求特此分享一个表格排序的程序。有问题,欢迎留言(虽 ... -
Javascript 事件转移
2007-09-19 08:52 749我遇到的Javascript 现 ... -
网页打印脚本
2007-09-19 08:55 1589<html><head><sty ... -
记录访问者IP
2007-09-19 10:46 855<?php //文件名字 $filename = &q ... -
JAVASCRIPT COOKIE初级指南
2007-12-23 23:43 6821、设置COOKIE数据: 最 ... -
PHP读取4种配置文件(php,ini,yaml,xml)
2007-12-23 23:49 873<?php/*** 读取4中配置的表信息,现支持php. ... -
JAVASCRIPT 与闭包
2007-12-23 23:57 619闭包和引用,this引用的简单介绍……<script t ...
相关推荐
prototype.js的系列文章——$H()函数 百度的Ajax.js文件 常用JS ...prototype.js的系列文章——Ajax.Request类 prototype.js的系列文章——Ajax.Updater类 prototype.js的系列文章——Try.these())函数
除此之外,Prototype_1.7.3.js还提供了丰富的AJAX(异步JavaScript和XML)功能。它简化了与服务器的通信,使得动态更新页面内容变得轻而易举。`Ajax.Request`和`Ajax.Updater`是其中两个关键的类,它们分别用于发起...
《prototype.js:JavaScript框架的核心与应用》 在Web开发领域,JavaScript库和框架极大地提高了开发效率,其中Prototype.js就是一款非常流行的开源JavaScript框架。本文将深入探讨Prototype.js的核心概念、功能...
7. **字符串和对象操作** - prototype.js 也增强了String和Object对象,例如`String.prototype.parseColor()`解析颜色值,`Object.toJSON()`将对象转换成JSON格式。 通过学习和使用prototype.js,开发者可以编写出...
《Prototype.js 1.4-1.6:JavaScript 动态原型框架的探索与实践》 Prototype.js 是一个广泛使用的JavaScript库,它扩展了JavaScript语言的功能,为开发人员提供了更强大的面向对象编程支持。该库的核心特性是其对...
它在Web开发中扮演着重要的角色,尤其在AJAX(异步JavaScript和XML)应用中,Prototype.js 提供了丰富的功能和工具,使得开发者能更高效地编写JavaScript代码。 ### 一、Prototype.js核心特性 1. **DOM操作**:...
- **Ajax支持**:`prototype.js`提供了一套完整的Ajax解决方案,包括`Ajax.Request`、`Ajax.Updater`和`Ajax.PeriodicalUpdater`等类,使得异步通信更为简便。 - **事件处理**:它增强了事件处理机制,允许绑定和...
"Prototype.js"是一个针对JavaScript的开源库,旨在增强和扩展JavaScript的基本功能,尤其在处理DOM(文档对象模型)操作、事件处理以及Ajax交互时提供了极大的便利。 ### 1. Prototype.js核心概念 - **原型链**:...
《prototype.js 1.4版开发者手册》是JavaScript开发领域中的一个重要参考资料,尤其对于那些希望深入理解并利用Prototype库的开发者来说,它是一份不可多得的资源。Prototype.js是一个强大的JavaScript库,由Sam ...
Prototype.js 1.6中的AJAX(异步JavaScript和XML)功能大大简化了与服务器的通信。`Ajax.Request`和`Ajax.Updater`是核心组件,前者用于发送请求,后者用于更新页面的一部分。它们都支持多种HTTP方法(GET、POST等...
Prototype.js 的核心理念是扩展 JavaScript 的内建对象,提供类(Class)系统、DOM 操作、Ajax 支持和丰富的函数工具。通过这个库,开发者可以使用类似于面向对象编程的方式来编写 JavaScript,使得代码更加结构化和...
1. **对象扩展**:Prototype通过扩展JavaScript的内置类型,如Array、String、Function等,添加了许多实用方法,例如`Array.prototype.each`用于迭代数组,`String.prototype.trim`用于去除字符串两端的空白。...
首先,Prototype.js的核心在于其强大的对象扩展和函数助手,比如`Object.extend`用于合并对象,`Array.prototype.each`用于遍历数组等。这些工具使得JavaScript代码更加简洁、可读性更强。 弹出窗口在Web开发中常见...
prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。 prototype.js不仅是一个有很大实用价值的js库,而且有很...
Prototype.js是一款强大的JavaScript库,由Sam Stephenson开发,旨在简化JavaScript的编程,提供了一系列实用的函数和类扩展,增强了JavaScript的基本功能。这款库的核心理念是通过类原型(Class Prototyping)实现...
Prototype.js是一个JavaScript库,它为Web开发提供了丰富的功能,特别是针对Ajax交互。Ajax,即异步JavaScript和XML,是一种在不刷新整个页面的情况下更新部分网页内容的技术。Prototype.js通过简化DOM操作、事件...
Prototype.js提供了许多document DOM对象的扩展,例如Document.prototype.getElementById()、Document.prototype.getElementsByClassName()等。 2.7. 对 Event 对象的扩展 Prototype.js提供了许多Event对象的扩展...
- **模拟类(Class)系统**:JavaScript原生不支持类,但Prototype.js通过`Class`和`Function.prototype.extend`等工具模拟了面向对象编程的类继承结构。 ### 2. 使用Prototype.js进行Ajax交互 Ajax是Asynchronous...