javascript版Ajax请求

什么是Ajax请求,Ajax也就是“Asynchronous JavaScript and
XML”(异步JavaScript和XML),无刷新数据读取。能减少流量的消耗,也提高了浏览的流畅性,给用户更加友好的体验。

发送Ajax请求也就几步便可完成

第一步:创建异步对象

var xhr = new
XMLHttpRequest();

这样创建的异步对象是给新版的浏览器用的,当然不乏一些用着旧版浏览器的老客户。旧版的创建方法如下:

var xhr = new
ActiveXObject(‘Microsoft.XMLHTTP‘);

这样我们可以写出如下形式来兼容两个类型的浏览器

var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject(‘Microsoft.XMLHTTP‘);
}

第二步:设置参数

get方法:xhr.open(‘get‘,
‘DataResponse.ashx‘, true);

post方法:xhr.open("post",
"DataResponse.ashx", true);

两个方式的区别自己去百度了,无非就是通过什么方式向发送请求的地址发送数据

第三步:设置编码头

这一步其实可以忽略:

get方法:

?





1

2

//让get请求不从浏览器获取缓存数据(可去)

xhr.setRequestHeader("If-Modified-Sine", "0");

       post方法

?





1

2

//编码格式

xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

  设置这个报文头的具体作用都写在了上面,貌似post方法中,这个设置编码格式是一定要弄的,不然会得不到数据

第四步:发送数据

xhr.send();

其中括号中可以放置要发送的数据,没有想发送的数据便留空。

自己做的一个小型网站来演示下:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Get.aspx.cs" Inherits="test.Get" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
window.onload = function () {
//javascript 的Ajax get方法
document.getElementById("getAjax").onclick = function () {
//向服务器请求时间,创建异步对象
var xhr = new XMLHttpRequest();
//设置参数
xhr.open(‘get‘, ‘DataResponse.ashx‘, true);
//让get请求不从浏览器获取缓存数据(可去)
xhr.setRequestHeader("If-Modified-Sine", "0");
//设置回调函数
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var res = xhr.responseText;
alert(res);
}
}
//发送数据
xhr.send();
}
//javascript 的Ajax Post方法
document.getElementById("postAjax").onclick = function () {
//向服务器请求时间,创建异步对象
var xhr = new XMLHttpRequest();
//设置参数
xhr.open("post", "DataResponse.ashx", true);
//编码格式
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//设置回调函数
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var res = xhr.responseText;
alert(res);
}
}
xhr.send();
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
get请求按钮:
<input type="button" id="getAjax" value="点击发送请求"/><br/>
post请求按钮:
<input type="button" id="postAjax" value="点击发送请求"/>
</div>
<img src="test.gif" />
</form>
</body>
</html>

这样便能看到这样的效果:

在服务器端,通过判断不同的请求方式来返回不同的数据给浏览器:


public void ProcessRequest(HttpContext context)
{
if(context.Request.HttpMethod.ToLower()=="get")
{
Thread.Sleep(1000);
context.Response.Write("这是一个get请求,成功返回数据");
}
else
{
Thread.Sleep(1000);
context.Response.Write("这是一个post请求,成功返回数据");
}
}

这里的Thread.Sleep(1000);主要是用来模拟浏览器向服务器请求数据这个过程,然后通过中间的gif图片来判断这个Ajax异步请求是怎样一回事,可以看到点击后,有那么服务器那边停缓了一秒钟,然而整个过程中gif图片没有停下来,然后请求完毕后不能后退,因此Ajax请求后还是以前这个页面,没有跳转,这样给客户的体验就增强了。最后附上整个项目源码:

http://files.cnblogs.com/xmfdsh/javascript%E7%89%88Ajax.rar

javascript版Ajax请求

时间: 2024-10-07 09:08:08

javascript版Ajax请求的相关文章

【转】Javascript原生Ajax请求

什么是 ajaxajax 即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),也就是无刷新数据读取. http 请求 首先需要了解 http 请求的方法(GET 和 POST). GET 用于获取数据.GET 是在 URL 中传递数据,它的安全性低,容量低. POST 用于上传数据.POST 安全性一般,容量几乎无限. ajax 请求 ajax 请求一般分成 4 个步骤. 1.创建 ajax 对象 在创建对象时,有兼容问题: var o

javascript中Ajax请求的封装代码

/****************************ajax请求 start**************************************/ function ajaxClass(_url, _successCallback, _failureCallback, _urlParameters, _callbackParams, _async, _charset, _timeout, _frequency, _requestTimes, _frame) { /** * AJAX

原生javaScript完成Ajax请求

使用原生javaScript完成Ajax请求,首先应该创建一个对象XMLHttprequest,考虑到兼容低版本IE浏览器,使用ActiveXObject对象,代码入下: var request; if(windoe.XMLHtprequest){ request=new XMLHttprequest(); }else{ request = new ActiveXObject(); } function success(text) { var textarea = document.getEle

使用原生JavaScript发送ajax请求

关于使用原生JavaScript发送异步请求给服务端. 准备工作: 代码编写工具用的是sublime 服务端使用的是wamp搭的一个本地Apache服务器,主要用来返回数据 方便测试 步骤: 浏览器端 html标签绑定事件发送ajax请求----> 五步操作:1 创建异步对象XMLHttpRequest; 2 设置method url 3 发送请求给服务端 4 注册事件   5 在事件中获取服务端返回的数据,进行操作. 服务器端 1 获取请求数据 2 返回结果给浏览器 下面来一个小demo1做一

原生javascript发送ajax请求及服务端处理

<%@ 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"><h

Javascript发送AJAX请求

一个对AJAX的封装 //url就是请求的地址 //successFunc就是一个请求返回成功之后的一个function,有一个参数,参数就是服务器返回的报文体 function ajax(url,successFunc) { var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); xhr.open("POST",url,true); xhr.onr

javascript原生ajax请求

1 class Ajax{ 2 3 constructor(url, method, data, callback_suc, callback_err, callback_run){ 4 this.RT = true;//默认为异步请求 5 this.url = url; 6 this.method = method || "POST"; 7 this.data = data || ""; 8 this.callback_suc = callback_suc ||

【转】javascript的ajax请求正确写法(兼容多浏览器)

function createXMLHttp() { var XmlHttp; if (window.ActiveXObject) { var arr=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp&qu

原生js版ajax请求

function getXMLHttpRequest() { var xhr; if(window.ActiveXObject) { xhr= new ActiveXObject("Microsoft.XMLHTTP"); }else if (window.XMLHttpRequest) { xhr= new XMLHttpRequest(); }else { xhr= null; } return xhr; } function save() { var xhr = getXMLHt