`
_Yggd
  • 浏览: 85829 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

AjaxRequest.js又一个ajax的小框架

    博客分类:
  • ajax
阅读更多
版权:JavaIT学习室
转载请表明,http://www.javait.org

AjaxRequest.js文件是一个单独独立出来专门对Ajax请求做处理的JavaScript。使用起来还是比较简单,但是功能肯定要和jQuery、ExtJS4这些JavaScript库有区别。因为AjaxRequest.js文件没有对HTML Document Model进行处理封装的方法,这一点要给大家说明一下。

下面先给出AjaxRequest.js文件的全部源代码结构。大家请参考如下的代码

var net=new Object(); //定义一个全局变量net
//编写构造函数
net.AjaxRequest=function(url,onload,onerror,method,params){
  this.req=null;
  this.onload=onload;
  this.onerror=(onerror) ? onerror : this.defaultError;
  this.loadDate(url,method,params);
}
//编写用于初始化XMLHttpRequest对象并指定处理函数,最后发送HTTP请求的方法
net.AjaxRequest.prototype.loadDate=function(url,method,params){
  if (!method){
    method="GET";
  }
  if (window.XMLHttpRequest){
    this.req=new XMLHttpRequest();
  } else if (window.ActiveXObject){
    this.req=new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (this.req){
    try{
      var loader=this;
      this.req.onreadystatechange=function(){
        net.AjaxRequest.onReadyState.call(loader);
      }

      this.req.open(method,url,true);
  if(method=="POST"){
this.req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  }
      this.req.send(params);
    }catch (err){
      this.onerror.call(this);
    }
  }
}

//重构回调函数
net.AjaxRequest.onReadyState=function(){
  var req=this.req;
  var ready=req.readyState;
  if (ready==4){
    if (req.status==200 ){
      this.onload.call(this);
    }else{
      this.onerror.call(this);
    }
  }
}
//重构默认的错误处理函籹
net.AjaxRequest.prototype.defaultError=function(){
  alert("错误数据\n\n回调状态:"+this.req.readyState+"\n状态: "+this.req.status);
}
其中最重要的方法就是AjaxRequest.js文件中的构造方法,所有Ajax的请求来调用此构造方法完成。

net.AjaxRequest=function(url,onload,onerror,method,params){
  this.req=null;
  this.onload=onload;
  this.onerror=(onerror) ? onerror : this.defaultError;
  this.loadDate(url,method,params);
}
参数介绍:
(1)url,指定你发送给服务器端的请求地址。
(2)onload,指定当用于处理服务器端返回的数据。如:xml/txt/json。当然onload这个需要自己写JavaScript函数
(3)onerror,指定用于请求服务器失败后的处理。如:400/500/401/404等等HTTP状态码
(4)method,告知请求URL的方式是GET请求还是POST请求
(5)params,发送给服务器端的参数

举个列子告诉大家如何用:
(1)编写一个Ajax.jsp页面


<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="JS/AjaxRequest.js"></script>
<script type="text/javascript">
//Ajax:页面无动态刷新技术(异步)
//Ajax的技术特点:JavaScript+XML(JSON)+HTML DOM/CSS DOM
//Ajax技术实现:
//(1)将页面请求发送给服务器端的Java代码,然后此Java代码会传送一个XML/txt/JSON格式的数据到View层
//(2)View层接受Ajax获取到服务端的数据,然后进行解析并将数据显示到页面上
//(3)一定要注意Ajax不会刷新页面就可以看到新的数据显示
//(4)采用AjaxRequest.js这个JavaScript代码来完成Ajax的编写
$ = function(v) {
return document.getElementById(v);
}
function sendMsg() { //用Ajax技术发送消息给服务器
var msg = $("msg").value;
var loader=new net.AjaxRequest("ajaxone.do?msg="+msg,doMsg,onError,"GET");
}
function doMsg() { //接受Ajax返回的消息,然后不刷新页面就显示数据
$("show").innerHTML=this.req.responseText;
}
function onError() { //如果Ajax与服务器通信失败给出一个报错信息
alert("服务器通信失败,请检查服务");
}
</script>
</head>
<body>
<input type="text" value="" id="msg"><input type="button" value="send" onclick="sendMsg()">
<div id="show"></div>
</body>
</html>
(2)一个AjaxServlet.java的服务器端代码


package com.webchart.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class AjaxServlet
*/
public class AjaxServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjaxServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
String msg = request.getParameter("msg");
msg = "<font color='red'>"+msg+"</font>";
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println(msg); //服务端处理好数据,将数据做出一个txt返回给页面
out.flush();
out.close();
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

}
分享到:
评论

相关推荐

    modulejs 下载,面向对象的javascript框架.rar

    modulejs是极致模块化的且面向对象的javascript框架,modulejs能让你在简单易用的前提下写出更佳维护性和可重用性的javascript代码。 Features: •HTML document query/traversing/manipulation •Lightweight ...

    一个简单实用的AJAX框架

    PublicFun注解 可以吧一个方法发布到JAVASCRIPT 里 比如 PublicFun(Level="public",FunName="Test") public Test(PageDocument page){ } 这样就完成了一个函数的发布 还提供了一个自定义标签 l:UpdatePanel 在这个...

    javascript ajax类AJAXRequest2007-12-31 更新

    AJAXRequest是一个轻量级的AJAX应用程序开发框架,兼容Firefox、IE、Opera、Safari,可以方便地进行一些AJAX中经常需要用到的操作,从而简化开发步骤,减少重复代码编写量。 如果在使用过程中发现了问题,或者有好的...

    也写一个Ajax.Request类附代码

    直接使用prototype.js体积比较大(40多k),而且仅仅用到其中的ajax功能,因此为了减轻下载的负担,又不能改动已经在prototype.js框架下写好的代码,只能是按照prototype的风格,自己写一个ajax类,达到零成本移植框架...

    Node.js-deft-request是一个轻量级的Javascript浏览器请求框架

    deft-request 是一个轻量级的 Javascript 浏览器请求框架,支持 Fetch,AJAX,JSONP,甚至支持自定义的请求方式。 使用非常简单 统一各种请求方式的参数

    Ajax详解.rar

    1.1 从一个示例应用程序开始 70 1.2 修改图片,麻烦的办法 74 1.3 替换图片,简单的办法 78 1.4 替换图片,(真正)简单的办法 80 1.5 事件处理程序 83 第 7 部分: 在请求和响应中使用 XML 85 1.6 XML:到底用...

    精通JS脚本之ExtJS框架.part2.rar

    1.2 第一个JavaScript程序 1.2.1 嵌入JavaScript 1.2.2 链接外部JavaScript文件 1.2.3 注意事项 1.3 基础语法 1.3.1 数据类型 1.3.2 变量与常量 1.3.3 运算符 1.4 流程控制语句 1.4.1 if条件语句 1.4.2 ...

    Java 面试宝典

    1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? ...... 7 2、Java 有没有 goto? .......................................................................................................

    精通JS脚本之ExtJS框架.part1.rar

    1.2 第一个JavaScript程序 1.2.1 嵌入JavaScript 1.2.2 链接外部JavaScript文件 1.2.3 注意事项 1.3 基础语法 1.3.1 数据类型 1.3.2 变量与常量 1.3.3 运算符 1.4 流程控制语句 1.4.1 if条件语句 1.4.2 ...

    SSH框架使用json,js,无刷新技术案例(含jar包和案例)

    SSH框架使用json,js,无刷新技术案例 ,方便正在研究这个的一些朋友 PARTNO.bind("blur",function(){ //ajax后台验证--PARTNO是否存在 //var path = ${pageContext.request.contextPath}; $.ajax({ ...

    BaldrickJS:一个简单、小巧的 Ajax 框架

    一个简单、小巧的 Ajax 框架。 完成一个完整的 ajax 请求的最短可能方法,......无需编写一行 javascript。 初始化 BaldrickJS 的例子 &lt; script &gt; jQuery ( document ) . ready ( function ( $ ) { ...

    Web系统与技术 课程教材

    2.4 框架标签... 39 2.4.1 帧标记&lt;frame&gt;. 39 2.4.2 IFRAME标记... 40 2.5 习题... 40 第3章 CSS样式设计... 43 3.1 CSS 简介... 43 3.2 CSS 语法与使用... 43 3.2.1 CSS定义语法... 43 3.2.2 CSS的...

    Prototype使用指南之ajax

    Prototype中的ajax.js提供了一个非常好用的ajax框架,一般应用中简单的调用以下代码就可以了 new Ajax.Request( url, {method: “get”, onSuccess: showFilter, onFailure: function(request){alert&#40;”...

    DWR.xml配置文件说明书(含源码)

    一个是对converter定义的引用和converter能够转换的类. 例如最简单的converter是null converter,它作用是把null和void值转换成javascript的null和undefined值.它是所有converter中最简单的,就象调用java的静态方法...

    cake php框架 v1.2(仿rails)

    CakePHP是一个开源的PHP on rails的full-stack framework。最开始从Ruby On Rails框架里得到灵感。程序员可使用它来快速创建的Web应用程序。我们的首要目的是使你以一种预置的快速且不失灵活性的方式开展工作。 为...

    saber-ajax:适用于移动端、promise 风格的 ajax 封装

    saber-ajax适用于移动端、 风格的 ajax 封装,支持 ,兼容 node 环境以之名~Installation通过 引入模块:$ edp import saber-ajax或者在 node 环境下使用 npm 引入模块:$ npm install saber-ajax --saveUsagevar ...

    LxAjaxFrame

    当你在Index里面增加一个函数后(比如login) 后台便可以直接进行调用比如(ind.login('leixiao','1234567')) 当然 这是普通的类 如果你想在自己写的类里面使用request,response,session等web参数 则需要注册的类...

    spring_MVC源码

    -- 这里在配成spring,下边也要写一个名为spring-servlet.xml的文件,主要用来配置它的controller --&gt; 19. *.do&lt;/url-pattern&gt; 20. &lt;/servlet-mapping&gt; 21. &lt;welcome-file-list&gt; 22. &lt;welcome-file&gt;index.jsp...

Global site tag (gtag.js) - Google Analytics