• new ActiveXObject("Microsoft XMLHTTP")是IE中创建XMLHTTPRequest对象的方法。非IE浏览器创建方法是new XmlHttpRequest().为了兼容不同的浏览器需要编写很多代码。
  • 用JQuery的回调函数($.post(data,textStatus))中data参数为服务器返回的数据,textStatus为服务器返回状态码,textStatus为"success"表示通信成功。
  • JQuery中提供了简化ajax使用的方法。$.ajax()函数是jQuery中提供的ajax访问函数,$.post()是对$.ajax()的post方式提交ajax查询的封装,$.get()是对$.ajax()的get方式提交ajax查询的封装。推荐用post方式,因为post方式没有缓存的问题。
  • 如果有请求参数则在第二个参数用字典方式来设置。$.post("GetDate1.ashx",{"id":"2"},function(data,textStatus){}).jQuery帮我们进行了URL编码,因此参数中有中文也不用担心。
  • XMLHttpRequest对象的open方法

    XMLHttpRequest对象的open方法的第3个参数

    xmlHttpRequest.open(method,url,true or false);

    1.发送信息的方式(post,get)

    2.发送的目标( url)

    3.发送的布尔变量 true代表异步,为false代表同步

    调用xmlHttpRequest对象的send () 把信息发送出去

    异步的回调

    onreadystatechange属性赋值来设置一个回调函数:

      xmlHttpRequest.onreadystatechange=function() {...};

    XMLHttpRequest对象的ReadyState属性值列表。

      ReadyState取值 描述

      0 描述一种"未初始化"状态;此时,已经创建一个XMLHttpRequest对象,但是还没有初始化。

      1 描述一种"发送"状态;此时,代码已经调用了XMLHttpRequest open()方法并且XMLHttpRequest已经准备好把一个请求发送到服务器。

      2 描述一种"发送"状态;此时,已经通过send()方法把一个请求发送到服务器端,但是还没有收到一个响应。

      3 描述一种"正在接收"状态;此时,已经接收到HTTP响应头部信息,但是消息体部分还没有完全接收结束。

      4 描述一种"已加载"状态;此时,响应已经被完全接收。

    当readyState=4时,

    函数会检查HTTP服务器响应的状态值。

    当HTTP服务器响应的值为200时,表示状态正常

    1. /*具体负责处理服务器返回数据的函数*/
    2. xmlHttpRequest.onreadystatechange = function (){
    3. //当服务器将数据返回给客户端时,readyState状态值为4
    4. if(xmlHttpRequest.readyState==4){
    5. //当服务器返回的数据是正常的数据时,status状态值为200
    6. if(xmlHttpRequest.status==200){
    7. //通过XMLHttpRequest对象的responseText属性获取
    8. //服务器返回的文本信息
    9. var returnMsg = xmlHttpRequest.responseText;
    10. //这里为具体的处理方式代码
    11. }
    12. }
    13. }
  • 创建XMLHttpRequest用到如下函数:
 function CreateXmlHttp()
{
var xmlhttp;
//非IE浏览器创建XmlHttpRequest对象
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
} //IE浏览器创建XmlHttpRequest对象
if(window.ActiveXObject)
{
try
{
xmlhttp=new ActiveXObject("Microsoft XMLHTTP");
}
catch(e)
{
try
{
xmlhttp=new ActiveXObject("msxml2.XMLHTTP");
}catch(ex)
{
alert("AJAX创建失败");
}
}
} return xmlhttp;
}

示例1:

用非jQuery的方式在客户端上显示服务器的时间,服务端源码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace AJAX1
{
/// <summary>
/// AJAXGetTime 的摘要说明
/// </summary>
public class AJAXGetTime : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{ context.Response.ContentType = "text/plain";
//以下的这些都是清除缓存用的,因为用get的方法时,如果有缓存,则回应是从缓存中读取的。
context.Response.Buffer = true;
context.Response.Expires = ;
context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-);
context.Response.AddHeader("pragma", "no-cache");
context.Response.AddHeader("cache-control", "private");
context.Response.CacheControl = "no-cache";
string id = context.Request["id"]; context.Response.Write(DateTime.Now.ToString()+"-->"+id);
} public bool IsReusable
{
get
{
return false;
}
}
}
}

客户端HTML码:

<!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>
<title></title>
<script type="text/javascript">
function CreateXmlHttp()
{
var xmlhttp;
//非IE浏览器创建XmlHttpRequest对象
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
} //IE浏览器创建XmlHttpRequest对象
if(window.ActiveXObject)
{
try
{
xmlhttp=new ActiveXObject("Microsoft XMLHTTP");
}
catch(e)
{
try
{
xmlhttp=new ActiveXObject("msxml2.XMLHTTP");
}catch(ex)
{
alert("AJAX创建失败");
}
}
} return xmlhttp;
}
function getServertime()
{
var xmlhttp = CreateXmlHttp();
if (!xmlhttp) {
alert("xmlhttp对象不存在.");
return;
} xmlhttp.open("POST","AJAXGetTime.ashx?id=测试",true);
xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState==4) //注意大小写
{
if(xmlhttp.status==200) { document.getElementById("text1").value = xmlhttp.responseText;
} else
{
alert("AJAX失败.");
return;
}
}
}
xmlhttp.send();
}
</script>
<style type="text/css">
#text1
{
width: 340px;
}
</style>
</head>
<body>
<input type="text" id="text1" value="aa" />
<input type="button" id="btn" value="gettime" onclick="getServertime();" />
</body>
</html>

示例2:用JQuery的方式得到如上服务器的时间,并创建一个新的服务端,用来显示汇率计算。这个操作都在同一个客户端页面上,当用户输入一定数值的人民币并选择要换算的币种(日元,美元等),点击按钮后会把这此信息提交给服务端进行计算,计算后再显示于客户端。

汇率计算服务端:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace JQueryAJAX
{
/// <summary>
/// HV 的摘要说明
/// </summary>
public class HV : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string moneytype=context.Request["type"]; //目的币种类型
int amount = Convert.ToInt32(context.Request["amount"]); //人民币数额
float result = ;
if (moneytype == "") //人民币对美元
result = amount / ;
else if (moneytype == "") //人民币对日元
result = amount * ;
else if (moneytype == "") //人民币对英镑
result = amount / ;
context.Response.Write(result); } public bool IsReusable
{
get
{
return false;
}
}
}
}

客户端,记着加入jquery库

<!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>
<title></title>
<script src="js/jquery-1.10.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function btnclick() {
$.post("AJAXGetTime.ashx?id="+encodeURI("中国"), function (data, textStatus) {
if (textStatus == "success")
$("#Text1").val(data);
else {
alert("从服务器端获取信息失败.");
} })
} function gethv() {
var amount = $("#txtamount").val(); var type = $("#type").val(); $.post("HV.ashx", { "type": type, "amount": amount }, function (data
, textStatus) { if (textStatus == "success")
$("#txtresult").val(data);
else
alert("服务器出错");
});
}
</script>
</head>
<body> <p>
<input id="Text1" type="text" /><input id="Button1" type="button"
value="gettime" onclick="btnclick();" /></p>
<div id="gethv">
<input type="text" id="txtamount" />
<select id="type">
<option value="1">美元</option>
<option value="2">日元</option>
<option value="3">英镑</option>
</select>
<input type="button" value="计算汇率" onclick="gethv();" />
<input type="text" id="txtresult" />
</div>
</body>
</html>

运行截图:

2.JQuery AJAX的更多相关文章

  1. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

  2. jquery ajax解析

    jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对 ...

  3. jQuery.ajax 根据不同的Content-Type做出不同的响应

    使用H5+ASP.NET General Handler开发项目,使用ajax进行前后端的通讯.有一个场景需求是根据服务器返回的不同数据类型,前端进行不同的响应,这里记录下如何使用$.ajax实现该需 ...

  4. jQuery.ajax(url,[settings])

    概述 通过 HTTP 请求加载远程数据. jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象. ...

  5. jQuery Ajax 实例 ($.ajax、$.post、$.get)

    jQuery Ajax 实例 ($.ajax.$.post.$.get) 转 Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的诧异了. ...

  6. jQuery Ajax传值给Servlet,在Servlet里Get接受参数乱码的解决方法

    最近在学jquery ui,在做一个小功能的时候需要将前台的值获取到,通过Ajax传递给Servlet,然后再在返回数据结果,但是在Servlet接受参数的时候,通过后台打印,发现接受乱码,代码示例如 ...

  7. JQuery+Ajax+Struts2+Hibernate 实现完整的登录注册

    写在最前: 下午有招聘会,不想去,总觉得没有准备好,而且都是一些不对口的公司,可是又静不下心来,就来写个博客. 最近在仿造一个书城的网站:http://www.yousuu.com ,UI直接拿来用, ...

  8. 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信

    两周前用长轮询做了一个Chat,并移植到了Azure,还写了篇博客http://www.cnblogs.com/indream/p/3187540.html,让大家帮忙测试. 首先感谢300位注册用户 ...

  9. jQuery AJAX 网页无刷新上传示例

    新年礼,提供简单.易套用的 jQuery AJAX 上传示例及代码下载.后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP). 有时做一个网站项目 ...

  10. 用JQuery Ajax 与一般处理程序 请求数据无刷新,以及如何调试错误

    通过 ajax() 与 一般处理程序,请求数据库数据,实现界面无刷新. Jquery ajax 请求参数详细说明 http://www.w3school.com.cn/jquery/ajax_ajax ...

随机推荐

  1. android 13 5种click事件不同实现方式 比较

    第一种:不便于管理. <Button android:id="@+id/btn_Gridlayout" android:layout_width="match_pa ...

  2. Linux命令之dot - 绘制DOT语言脚本描述的图形

    本文链接:http://codingstandards.iteye.com/blog/840055 用途说明 Graphviz (Graph Visualization Software的缩写)是一个 ...

  3. QT程序打包发布(双击运行)

  4. Apple-Watch开发2 APPIcon设置

    网址:http://makeappicon.com/ 直接放置到相应的文件即可 (these are all in pixels) 48 x 48 55 x 55 58 x 58 80 x 80 87 ...

  5. 趣谈iOS运行时的方法调用原理

    一个成熟的计算机语言必然有丰富的体系,复杂的容错机制,处理逻辑以及判断逻辑.但这些复杂的逻辑都是围绕一个主线丰富和展开的,所以在学习计算机语言的时候,先掌握核心,然后了解其原理,明白程序语言设计的实质 ...

  6. 常用的 css 命名规则

    头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left rig ...

  7. Unity3D 相机跟随主角移动

    这里给主相机绑定一个脚本. 脚本写为: using UnityEngine; using System.Collections; public class camerafollow : MonoBeh ...

  8. C++ 简单的入门语法

    入门的hello world using namespace std; 是使用命名空间,有点像java里面的引入包main 方法和java一样是主入口,有且只有一个,因为是int ,所以还必须返回一个 ...

  9. rdlc报表

    也是第一次接触报表这个东西.现在在我理解,报表无非就是两个内容,格式和数据. 格式没有多少了解,就记录了,以后再续.数据的绑定和结果的显示是怎么实现的呢? 今天的主角就是rdlc这个文件和Report ...

  10. powerdesigner设置唯一键,但不是主键的方式

    [转载]http://blog.csdn.net/cnham/article/details/6676650 唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的 ...