通过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 相关文章推荐
图片之间的切换
Jun 26 Javascript
Ucren Virtual Desktop V2.0
Nov 07 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
Jan 24 Javascript
JS出现失效的情况总结
Jan 20 Javascript
js实现简易聊天对话框
Aug 17 Javascript
vue 自定义提示框(Toast)组件的实现代码
Aug 17 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
Sep 21 Javascript
vue实现element表格里表头信息提示功能(推荐)
Nov 20 Javascript
微信小程序商品详情页底部弹出框
Nov 22 Javascript
如何在postman测试用例中实现断言过程解析
Jul 09 Javascript
jquery实现抽奖功能
Oct 22 jQuery
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/03 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
学习ExtJS fit布局使用说明
2009/10/08 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
小程序实现录音功能
2020/09/22 Javascript
python编程培训 python培训靠谱吗
2018/01/17 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
Python面向对象进阶学习
2019/05/21 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
Python如何将字符串转换为日期
2020/07/31 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
留学推荐信中文范文三篇
2014/01/25 职场文书
道路交通安全实施方案
2014/03/12 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
养成教育主题班会
2015/08/13 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书