通过XMLHttpRequest和jQuery实现ajax的几种方式


Posted in Javascript onAugust 28, 2015

示例一:利用Ajax来动态获取时间的例子。

HTML代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title></title>
  <script type="text/javascript" src="Scripts/jquery-1.7.1.js"></script>
  <script type="text/javascript" src="Scripts/jwy.js"></script> 
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <input type="text" name="textbox" id="text1" />
    <input type="button" name="button" id="Button1" value="显示时间" onclick="btnclick()" />
  </div>
  </form>
</body>
</html>

创建一个“一般处理程序”来处理前台请求,返回系统当前时间:

Handler.ashx

<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Linq;
using System.Collections.Generic;
using System.Text;
public class Handler : IHttpHandler {
  public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "text/plain";
    context.Response.Write(ShowTime());
  }
  public bool IsReusable {
    get {
      return false;
    }
  }
  public static string ShowTime()
  {
    return DateTime.Now.ToString(); 
  }
}

js代码:

function btnclick() {
  var httprequest = null;
  // 初始化XMLHttpRequest对象
  if (window.XMLHttpRequest) {
    // Firefox等现代浏览器中的XMLHttpRequest对象创建
    httprequest = new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {
    // IE中的XMLHttpRequest对象创建
    httprequest = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (!httprequest) {
    alert("创建httprequest对象出现异常!");
  }
  httprequest.open("POST", "Handler.ashx", true);
  //httprequest向handler发送post请求,最后参数是设定是否为异步请求,true为异步,false为同步
  httprequest.onreadystatechange = function () {
    //指定onreadystatechange事件句柄对应的函数
    if (httprequest.readyState == 4) {
      //4代表服务器返回完成
      if (httprequest.status == 200) {
        //200代表成功了
        document.getElementById("text1").value = httprequest.responseText;
        //responsetext表示服务器返回的文本,还有一种方式是responseXML是为了获取服务器返回的xml
      }
      else {
        alert("AJAX服务器返回错误!");
      }
    }
  }
  httprequest.send();
  //在这里才真正的向服务器端发送请求
}

我们用jquery来前台js代码会变得十分简洁:

基于jquery编写的js代码:

注意:HTML代码要把button的onclick事件去掉,因为我们直接在js用了事件绑定。

$(document).ready(function () {
  //button1绑定事件
  $("#Button1").bind("click", function () {
    $.ajax({
      url: "Handler.ashx",
      type: "POST",
      success: function (data) {
        //$("#text1").val(data);
        document.getElementById("text1").value = data;
      }
    });
  });
});

不得不说jquery“简约而不简单”……

jquery中的$.ajax集合了get、post方法,默认的是get。

如果直接用POST的话,代码更简单

$(document).ready(function () {
  //button1绑定事件
  $("#Button1").bind("click", function () {
    $.post("Handler.ashx", function (data) {
  document.getElementById("text1").value = data;
    });  
 });
});

示例二:

一、XMLHttpRequest实现获取数据

不使用jQuery实现页面不刷新获取内容的方式,我们这里采用XMLHttpRequest原生代码实现;

js代码如下:

//1.获取a节点,并为其添加Oncilck响应函数
document.getElementsByTagName("a")[0].onclick = function(){
 //3、创建一个XMLHttpRequest();
  var request = new XMLHttpRequest();
  //4、准备发送请求的数据url
  var url = this.href;
  var method = "GET";
  //5、调用XMLHttpRequest对象的open方法
  request.open(method,url);
  //6、调用XMLHttpRequest对象的send方法
  request.send(null);
  //7、为XMLHttpRequest对象添加onreadystatechange 响应函数
  request.onreadystatechange = function(){
    //8、判断响应是否完成:XMLHttpRequest 对象的readystate的属性值为4的时候
    if(request.readyState == 4){
       //9、在判断响应是否可用:XMLHttpRequest 对象status 属性值为200
      if(request.status == 200){
           //10、响应结果
           alert(request.responseText);
      }   
    }  
  }    
      //2、取消a节点的额默认行为
      return false;    
}

插入HTML代码:

<a href = "hello.txt">点击获取文本内容</a>

 二、jQuery实现ajax获取信息

这个例子是动态的从后台获取数据来改变下拉按钮的内容;

js代码如下:

function bindCarteam0(){
     //通过URL请求数据
     var URL = <select:link page="/xiaoshouwl.do?method=getCarteamList"/>;
      $.ajax({
        url:URL,
        type:'GET',
        dataType: "json",
        success:function(html){
          var str="<option value='-1'>全部</option>";
          for(var i=0;i<html.length;i++){
            str+="<option value='"+html[i].id+"'>"+html[i].name+"</option>";
          }
          $("#carteam_code").empty().html(str);
        }
      });
   }

HTML代码如下:

<select:select property="carteam_code" styleId="carteam_code" style="width:150px">
                     <select:option value="-1">全部</select:option>
                </select:select>

其中type类型有get和post两种;

post 可以传输的数据量比较大,get有字节限制;

Javascript 相关文章推荐
setTimeout函数兼容各主流浏览器运行执行效果实例
Jun 13 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
Feb 27 Javascript
javascript元素动态创建实现方法
May 13 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
js实现简单的验证码
Dec 25 Javascript
BootstrapTable refresh 方法使用实例简单介绍
Feb 20 Javascript
基于Bootstrap框架实现图片切换
Mar 10 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
Feb 13 Javascript
vue组件 keep-alive 和 transition 使用详解
Oct 11 Javascript
深入分析JavaScript 事件循环(Event Loop)
Jun 19 Javascript
Angular进行简单单元测试的实现方法实例
Aug 16 Javascript
three.js如何实现3D动态文字效果
Mar 03 Javascript
jQuery实现平滑滚动的标签分栏切换效果
Aug 28 #Javascript
jquery图片滚动放大代码分享(2)
Aug 28 #Javascript
浅谈JavaScript中的string拥有方法的原因
Aug 28 #Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
Aug 27 #Javascript
jquery实现左右滑动菜单效果代码
Aug 27 #Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
Aug 27 #Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
Aug 27 #Javascript
You might like
phpnow php探针环境检测代码
2014/11/04 PHP
php中in_array函数用法分析
2014/11/15 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
Python中的魔法方法深入理解
2014/07/09 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
Python Gitlab Api 使用方法
2019/08/28 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
雪山饭庄的创业计划书范文
2014/01/18 职场文书
党课培训心得体会
2014/09/02 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
小学生作文评语集锦
2014/12/25 职场文书
先进典型发言材料
2014/12/30 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
新党员入党决心书
2015/09/22 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
spring 项目实现限流方法示例
2022/07/15 Java/Android