AJAX简介

1.如果没有AJAX

普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面,如果没有ajax,在youku看视频的过程中,就没法提交评论,页面会刷新,视频会被打断。

2.说说AJAX

AJAX是一种进行页面局部异步刷新的技术。用AJAX向服务器发送请求和获得服务器返回的数据并且更新到界面中,不是整个页面刷新,而是在HTML页面中使用JavaScript创建XMLHTTPRequest(简称XHR)对象来向服务器发出请求以及获得返回的数据,在页面中由XMLHTTPRequest来发出Http请求和获得服务器的返回数据,这样页面就不会刷新了。 XMLHTTPRequest是AJAX的核心对象。

局部:一小部分刷新,其他部分不刷新;

异步:网络请求期间,浏览器不卡。

XMLHTTPRequest

1.使用 XMLHTTPRequest

  1. // 创建XMLHTTP对象,考虑兼容性
  2. var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
  3. //“准备”向服务器的GetDate1.ashx发出Post请求(GET可能会有缓存问题)
  4. // Post请求浏览器一定不会缓存。这里还没有发出请求。true代表异步请求。
  5. xmlhttp.open("POST", "AJAXTest.ashx?i=5&j=10", true);
  6. xmlhttp.onreadystatechange = function ()
  7. {
  8. // readyState == 4 表示服务器返回完成数据了。之前可能会经历
  9. // 2(请求已发送,正在处理中)、
  10. // 3(响应中已有部分数据可用了,但是服务器还没有完成响应的生成)
  11. if (xmlhttp.readyState == 4)
  12.  
  13. {
  14. //如果状态码为200则是成功
  15.  
  16. if (xmlhttp.status == 200)
  17.  
  18. {
  19. alert(xmlhttp.responseText);
  20. }
  21. else
  22. {
  23. alert("AJAX服务器返回错误!");
  24. }
  25. }
  26. }
  27.  
  28. //不要以为if (xmlhttp.readyState == 4) {在send之前执行!!!!
  29. xmlhttp.send(); //这时才开始发送请求
  30. //发出请求后不等服务器返回数据,就继续向下执行,所以不会阻塞,界面就不卡了,这就是AJAX中“A”的含义“异步”。试着在ashx加一句Thread.Sleep(3000);

2.简单封装一下

  1. // url:请求的URL 、
  2. //onsuccess:请求成功后的处理、
  3. //onfail:请求失败后的处理
  4. function ajax(url,onsuccess,onfail)
  5. {
  6. var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
  7. xmlhttp.open("POST", url, true);
  8. xmlhttp.onreadystatechange = function ()
  9. {
  10. if (xmlhttp.readyState == 4)
  11. {
  12. if (xmlhttp.status == 200)
  13. {
  14. onsuccess(xmlhttp.responseText);
  15. }
  16. else
  17. {
  18. onfail(xmlhttp.status);
  19. }
  20. }
  21. }
  22. xmlhttp.send(); //这时才开始发送请求
  23. }

之后调用Ajax的时候,就可以

  1. ajax("test.ashx",function(){
  2. //请求返回成功时处理的函数。。。
  3. },
  4. function(){
  5. //请求失败时处理的函数。。。
  6. })

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)的更多相关文章

  1. 浅谈页面无刷新技术ajax

    现在一般网站都是用ajax来实现页面无刷新操作的. 什么是无刷新:ajax可以实现页面与后台的数据交互,用户完全感觉不出页面有任何的刷新,这就是AJAX的无刷新. ajax方法实现: 可以对ajax进 ...

  2. Asp.net页面无刷新请求实现

    Asp.net页面无刷新请求实现 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&qu ...

  3. HTTP与AJAX深入揭秘,不使用AJAX实现页面无刷新

    AJAX的原理是什么? 实际上就是发起HTTP请求,既然就是发起HTTP请求,那只要我们能够实现发起HTTP请求就可以在不使用AJAX的情况下实现相同的效果. 在前端有好多方式可以发起HTTP请求,比 ...

  4. Ajax下载文件(页面无刷新)

    说明:Ajax是无法实现文件传输的,本文只是模拟了Ajax不刷新页面就可以请求并返回数据的效果.实质上还是通过提交form表单来返回文件流的输出. 分步实现逻辑: ajax请求服务器,访问数据库,根据 ...

  5. 基于jQuery的ajax系列之用FormData实现页面无刷新上传

    接着上一篇ajax系列之用jQuery的ajax方法向服务器发出get和post请求写,这篇主要写如何利用ajax和FormData实现页面无刷新的文件上传效果,主要用到了jQuery的ajax()方 ...

  6. 页面无刷新Upload File

    页面无刷新Upload File. 利用jquery.form.js的ajaxForm提交文件. 具体参考以下代码: 前台html <%@ Page Language="C#" ...

  7. JQuery 实现页面无刷新

    对于JQuery实现页面无刷新的效果,即:应用这个JQuery这个组件,可以实现在页面上加载数据库中的数据信息,但是并没有给用户页面刷新的感觉,这样既可以有效的进行数据交互,也可以不妨碍用户的其他操作 ...

  8. JavaScript实现页面无刷新让时间走动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Cookie详解、ASP.NET核心知识(7)

    无状态的http协议 1.回顾http协议 Http协议是请求响应式的,有请求才有响应,是无状态的,不会记得上次和网页“发生了什么”. 关于http协议的这种特点,黑兔在前面的这三篇博文中进行了详细的 ...

随机推荐

  1. Alpha阶段敏捷冲刺⑤

    1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 新增了一个登录界面 完成记账的分类模块 报表界面初步设计 今天要完成 ...

  2. Python动态规划求解最长递增子序列(LIS)

    原始代码错误,移步博客查看O(N^2)及优化的O(N*logN)的实现:每天一道编程题--最长递增子序列

  3. 【版本管理】git本地操作

    1.初始化一个Git仓库,使用git init命令. 2.添加文件到Git仓库,分两步: • 第一步,使用命令git add 文件名,注意,可反复多次使用,添加多个文件: • 第二步,使用命令git ...

  4. springmvc+mybatis 处理时间

    项目结构: 一.数据库中time的字段为datetime1. 数据库设计如图 2. addNews.jsp <%@ page language="java" contentT ...

  5. 快速配置java环境变量

    右键单击计算机--->属性 点击 “高级系统设置”--->"环境变量",出现环境变量设置窗口 系统变量--->新建 JAVA_HOME变量,变量值填写jdk安装路 ...

  6. sqoop 补充

    1.用 sqoop 将MySQL中的数据导入hbase中 sqoop import \--connect jdbc:mysql://***.***.*.***:3306/mysql \--hbase- ...

  7. Codeforces Round #532

    以后不放水题了 C.NN and the Optical Illusion 复习一下高中数学即可 $\frac{ans}{ans+r}=\sin \frac{\pi}{n}$ 解方程 #include ...

  8. bzoj2757【scoi2012】Blinker的仰慕者

    题目描述 Blinker 有非常多的仰慕者,他给每个仰慕者一个正整数编号.而且这些编号还隐藏着特殊的意义,即编号的各位数字之积表示这名仰慕者对Blinker的重要度. 现在Blinker想知道编号介于 ...

  9. composer install 出现的问题

    今天克隆代码之后,在composer install 的时候出现了一些问题,在此记录一下. 错误代码如下: [root@localhost MarketingCenter]# composer ins ...

  10. 把矩阵分成n*m个块,从任意一个块出发,问是否可以一笔画遍历矩阵中所有的块