让页面无刷新的AJAX、ASP.NET核心知识(9)
AJAX简介
1.如果没有AJAX
普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面,如果没有ajax,在youku看视频的过程中,就没法提交评论,页面会刷新,视频会被打断。

2.说说AJAX
AJAX是一种进行页面局部异步刷新的技术。用AJAX向服务器发送请求和获得服务器返回的数据并且更新到界面中,不是整个页面刷新,而是在HTML页面中使用JavaScript创建XMLHTTPRequest(简称XHR)对象来向服务器发出请求以及获得返回的数据,在页面中由XMLHTTPRequest来发出Http请求和获得服务器的返回数据,这样页面就不会刷新了。 XMLHTTPRequest是AJAX的核心对象。
局部:一小部分刷新,其他部分不刷新;
异步:网络请求期间,浏览器不卡。
XMLHTTPRequest
1.使用 XMLHTTPRequest
// 创建XMLHTTP对象,考虑兼容性
var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
//“准备”向服务器的GetDate1.ashx发出Post请求(GET可能会有缓存问题)
// Post请求浏览器一定不会缓存。这里还没有发出请求。true代表异步请求。
xmlhttp.open("POST", "AJAXTest.ashx?i=5&j=10", true);
xmlhttp.onreadystatechange = function ()
{
// readyState == 4 表示服务器返回完成数据了。之前可能会经历
// 2(请求已发送,正在处理中)、
// 3(响应中已有部分数据可用了,但是服务器还没有完成响应的生成)
if (xmlhttp.readyState == 4) {
//如果状态码为200则是成功 if (xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
else
{
alert("AJAX服务器返回错误!");
}
}
} //不要以为if (xmlhttp.readyState == 4) {在send之前执行!!!!
xmlhttp.send(); //这时才开始发送请求
//发出请求后不等服务器返回数据,就继续向下执行,所以不会阻塞,界面就不卡了,这就是AJAX中“A”的含义“异步”。试着在ashx加一句Thread.Sleep(3000);
2.简单封装一下
// url:请求的URL 、
//onsuccess:请求成功后的处理、
//onfail:请求失败后的处理
function ajax(url,onsuccess,onfail)
{
var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open("POST", url, true);
xmlhttp.onreadystatechange = function ()
{
if (xmlhttp.readyState == 4)
{
if (xmlhttp.status == 200)
{
onsuccess(xmlhttp.responseText);
}
else
{
onfail(xmlhttp.status);
}
}
}
xmlhttp.send(); //这时才开始发送请求
}
之后调用Ajax的时候,就可以
ajax("test.ashx",function(){
//请求返回成功时处理的函数。。。
},
function(){
//请求失败时处理的函数。。。
})
Json
1.什么是Json?
AJAX传递复杂数据如果自己进行格式定义的话会经历组装、解析的过程,因此AJAX中有一个事实上的数据传输标准JSon。Json(是一个标准,就像XML一样,Json规定了对象以什么样的格式保存为一个字符串)将复杂对象序列化为一个字符串,在浏览器端再将字符串反序列化为JavaScript可以读取的对象。Json被几乎所有语言支持。Json就是一个把对象(js、java、.net)表示为字符串的标准。
2.格式
Json是什么,Json就是javascript对象或者数组格式的字符串,Http协议不能传递JavaScript对象,所以要转换为字符串进行传输。
JavaScript对象(键值对) var person= {name:'rupeng',age:8};
JavaScript数组: var names = ['rupeng','qq','taobao'];
JavaScript对象数组: var persons = [{name:'rupeng',age:8}, {name:'qq',age:15}, {name:'taobao',age:10}];
JavaScript对象关联: var p = {name:'yzk',child:{name:'timi',age:1}};
以上这些都可以转化成Json。
3.转换
1)如何把json字符串转换为js对象:
var obj = eval("a("+data+")")。举例:普通对象、数组、对象数组、多对象关联。
2)C#中将.Net对象序列化为Json字符串的方法:
JavaScriptSerializer().Serialize(p)。.Net对象→json字符串→JavaScript对象。
JavaScriptSerializer在System.Web.Extensions.dll中。Json.Net
3)C#中的匿名类: var p = new { Id=5,Name="rupeng"} 通过反编译看到其实还是生成一个类。
JQuery AJAX
1.$.ajax
//Jquery封装简化了AJAX,有$.get、$.post等不同效果的方法,这里介绍最常使用的$.ajax(可以获得请求失败的消息)。
$.ajax({
type: "post",
url: "Ajax1.ashx",
data: { i1: $("#txt1").val(), i2: $("#txt2").val() },
success: function(data, txtStatus) {alert(data);},
error: function () { alert("错误"); }
});
//ajax方法的参数就是一个字典,
//最好设定post提交
//data为提交的报文体
//success为请求成功的处理事件
//error为请求通讯失败的处理事件(服务器错误、404等)
2.JQuery AJAX Json处理
1)可以使用$.parseJSON()把json字符串解析为JavaScript对象,比eval更安全
2)如果设定ajax请求的ContentType为"application/json" 或者ajax请求中设定dataType: "json",那么success的第一个参数就是JavaScript对象,不用手动解析了。

让页面无刷新的AJAX、ASP.NET核心知识(9)的更多相关文章
- 浅谈页面无刷新技术ajax
现在一般网站都是用ajax来实现页面无刷新操作的. 什么是无刷新:ajax可以实现页面与后台的数据交互,用户完全感觉不出页面有任何的刷新,这就是AJAX的无刷新. ajax方法实现: 可以对ajax进 ...
- Asp.net页面无刷新请求实现
Asp.net页面无刷新请求实现 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&qu ...
- HTTP与AJAX深入揭秘,不使用AJAX实现页面无刷新
AJAX的原理是什么? 实际上就是发起HTTP请求,既然就是发起HTTP请求,那只要我们能够实现发起HTTP请求就可以在不使用AJAX的情况下实现相同的效果. 在前端有好多方式可以发起HTTP请求,比 ...
- Ajax下载文件(页面无刷新)
说明:Ajax是无法实现文件传输的,本文只是模拟了Ajax不刷新页面就可以请求并返回数据的效果.实质上还是通过提交form表单来返回文件流的输出. 分步实现逻辑: ajax请求服务器,访问数据库,根据 ...
- 基于jQuery的ajax系列之用FormData实现页面无刷新上传
接着上一篇ajax系列之用jQuery的ajax方法向服务器发出get和post请求写,这篇主要写如何利用ajax和FormData实现页面无刷新的文件上传效果,主要用到了jQuery的ajax()方 ...
- 页面无刷新Upload File
页面无刷新Upload File. 利用jquery.form.js的ajaxForm提交文件. 具体参考以下代码: 前台html <%@ Page Language="C#" ...
- JQuery 实现页面无刷新
对于JQuery实现页面无刷新的效果,即:应用这个JQuery这个组件,可以实现在页面上加载数据库中的数据信息,但是并没有给用户页面刷新的感觉,这样既可以有效的进行数据交互,也可以不妨碍用户的其他操作 ...
- JavaScript实现页面无刷新让时间走动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Cookie详解、ASP.NET核心知识(7)
无状态的http协议 1.回顾http协议 Http协议是请求响应式的,有请求才有响应,是无状态的,不会记得上次和网页“发生了什么”. 关于http协议的这种特点,黑兔在前面的这三篇博文中进行了详细的 ...
随机推荐
- 电脑CPU开机上电后的第一条指令
结合上面的文章,CPU上电后第一条指令是通过CS:IP来指定的,CPU厂家会给其初始值,对于386处理器来说,CPU第一条指令地址是 0xFFFFFFF0 这里会有一个问题,CPU怎么能一上来就去0x ...
- Pytest - 进阶功能fixture
1. 概述 Pytest的fixture功能灵活好用,支持参数设置,便于进行多用例测试,简单便捷,颇有pythonic.如果要深入学习pytest,必学fixture. fixture函数的作用: 完 ...
- shell的sort命令
sort命令以行为单位对文本进行排序. 命令语法: sort [-b/d/f/g/i/M/n/r] [InFile] 参数解释: -b: ignore-leading-blanks,忽略前面空格符部分 ...
- ZJOI2018酱油记
ZJOI2018酱油记 前言 作为\(HN\)高一蒟蒻选手,毕竟去了趟\(ZJOI\)玩泥巴 不写点游记还是不太好吧. 今天来补一补. Day0 星期天,中午,我们一群人滚到了学校门口 然后集合,滚去 ...
- 【BZOJ4205】卡牌配对
Description 现在有一种卡牌游戏,每张卡牌上有三个属性值:A,B,C.把卡牌分为X,Y两类,分别有n1,n2张. 两张卡牌能够配对,当且仅当,存在至多一项属性值使得两张卡牌该项属性值互质,且 ...
- BZOJ5058 期望逆序对 【矩乘 + 组合数学 + 树状数组】
题目链接 BZOJ5058 题解 可以发现任意两个位置\(A,B\)最终位置关系的概率是相等的 如果数列是这样: CCCCACCCCBCCCC 那么最终有\(7\)种位置关系 \((A,B)\) \( ...
- Effective C++ 条款08:别让异常逃离析构函数
1.别让异常逃离析构函数的原因 <Effective C++>第三版中条款08建议不要在析构函数中抛出异常,原因是C++异常机制不能同时处理两个或两个以上的异常.多个异常同时存在的情况下, ...
- 解题:WC 2007 石头剪刀布
题面 要我们把边定向,最大化留下来的三元环数目......并不能直接做,考虑容斥,去掉不合法的数目. 那么三个点不成环当且仅当有一个点出度为2一个点入度为2,发现最终答案就是$C_n^3-\sum C ...
- E. Mahmoud and Ehab and the function Codeforces Round #435 (Div. 2)
http://codeforces.com/contest/862/problem/E 二分答案 一个数与数组中的哪个数最接近: 先对数组中的数排序,然后lower_bound #include &l ...
- pycharm配置总结
1. 快捷键 格式化代码:Ctrl + Alt + L 2. A scheme with this name already exists or was deleted without applyin ...