通过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 相关文章推荐
jquery 图片预加载 自动等比例缩放插件
Dec 25 Javascript
JavaScript 组件之旅(三):用 Ant 构建组件
Oct 28 Javascript
javascript入门基础之私有变量
Feb 23 Javascript
去掉gridPanel表头全选框的小例子
Jul 18 Javascript
Jquery操作Ajax方法小结
Nov 29 Javascript
JavaScript、C# URL编码、解码总结
Jan 21 Javascript
AngularJS 验证码60秒倒计时功能的实现
Jun 05 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
Oct 31 Javascript
基于vue2.x的电商图片放大镜插件的使用
Jan 22 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
微信小程序用户拒绝授权的处理方法详解
Sep 20 Javascript
简单了解JavaScript sort方法
Nov 25 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
如何判断php数组的维度
2013/06/10 PHP
PHP实现微信发红包程序
2015/08/24 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
php判断目录存在的简单方法
2019/09/26 PHP
20个最新的jQuery插件
2012/01/13 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
JavaScript严格模式详解
2017/01/16 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
python冒泡排序算法的实现代码
2013/11/21 Python
python中的多线程实例教程
2014/08/27 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Python中请不要再用re.compile了
2019/06/30 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
华为c/c++笔试题
2016/01/25 面试题
架构师岗位职责
2013/11/18 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
《搭石》教学反思
2014/04/07 职场文书
环保专项行动方案
2014/05/12 职场文书
春游踏青活动方案
2014/08/14 职场文书
二审答辩状范文
2015/05/22 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers