第六章 Json和AJAX
发布日期:2021-05-07 10:54:51 浏览次数:14 分类:技术文章

本文共 8660 字,大约阅读时间需要 28 分钟。

文章目录


提示:以下是本篇文章正文内容,下面案例可供参考

目标

1、JSON对象【重点】

2、Ajax【难点】

3、正则表达式【重点】

4、Url重写【了解】

知识点讲解

一、JSON

1、why:

轻量级传递数据,便于人和机器阅读

2、what:

JavaScript object notation,轻量级数据交换格式,是JavaScript的一个子集

注:1、json完全独立于语言(json格式的数据可以在任何的语言c#、Java、Python等使用)

3、组成:键值对

4、how:

(一)定义json格式的数据(存储数据)

简单:值是基本类型字符串、数字、布尔

注:(1)键是字符串,如果键包含“-” ,必须用“”括起来

(2)值的类型:字符串“”、数字、布尔true|false、对象、数组、函数function、null

复杂:值是对象类型、数组类型、函数类型

(1)属性值是对象类型 ,用{}

//var jsonobj={ key1:value1,key2:object  }var jsonobj2 = {     name: "猪八戒", age: 18, money: 9.9, married: false,  wife: {    name: "潘金莲", age: 18 } }

(2)属性值是数组,用[]

var jsonobj2 = {     name: "猪八戒", age: 18, money: 9.9, married: false, wife: {    name: "潘金莲", age: 18 }, sons: [{    name: "猪大", age: 2 }, {   name: "猪二",age:1}]};

(3)属性值是函数,用function(){}

var jsonobj2 = {    name: "猪八戒", age: 18, money: 9.9, married: false,   wife: {    name: "潘金莲", age: 18 },   sons: [{    name: "猪大", age: 2 }, {    name: "猪二", age: 1 }],   say: function () {         alert("大师兄,师傅被妖怪抓走了")   }};

(二)取数据

语法:json对象.属性名 或者 json对象[“属性名”]

注:什么时候必须用"[]"取值,当属性名称有“-”连接符时

简单:

语法:json对象.键名 或json对象[“键名”]

//取猪八戒的名字和年龄var n = jsonobj .name;var a = jsonobj .age;

复杂:

值是对象: jsonobj.key1.key2.属性名 或者 jsonobj[“key1”][“key2”].属性名

// 取猪八戒媳妇的名字var v2 = jsonobj2.wife.name;

值是数组: jsonobj.key[0]

//数组  取猪八戒第一个儿子的名字 var v3 = jsonobj3.sons[0].name

值是函数: jsonobj.key

//函数  聆听猪八戒唠叨var s = jsonobj4.say;s();

(三)c#后台输出json格式的字符串

using System.Web.Script.Serialization;//引入JavaScript序列号包public void ProcessRequest(HttpContext context)//处理用户的请求 {        //设置输出的内容的类型   context.Response.ContentType = "text/plain";   //重点输出json格式的信息//   //这是c#后台程序    var stu = new {    name = "王勤", age = 18, married = false };   //将c#对象转换为JavaScript里面的json格式的字符串     //创建一个JavaScript序列化对象   JavaScriptSerializer jss = new JavaScriptSerializer();   //转换为json格式的字符串"{ name: "王勤", age: 18, married: false }"   string jsonstr = jss.Serialize(stu);    //输出给浏览器    context.Response.Write(jsonstr); }

二、 Ajax

1、what:

Asynchronous Javascript And XML 用于与服务器进行数据交互:获取或提交数据。

2、why:

局部刷新 (不需要刷新整个页面,就能从服务获取数据并更新到界面)

3、how:

原生ajax、第三方ajax框架

原生

var  xmlHttpRequest = new XMLHttpRequest()

第三方框架:兼容型好、使用便捷,jQuery的ajax函数

jQuery通用语法:(常用)

$.ajax( {   	 url: "请求的网页地址",	 type: "请求方式get|post,默认get,上传大的数据post",	 dataType: "要求服务器返回的数据类型json|html|xml|script,常返回json数据",	 data:{    username: "纪好靓",age: 18},//用于传递到服务器的数据	 success:function(result,status){   //请求成功事件。result由服务器返回的结果,并根据dataType参数进行处理后的数据;状态字符串		 alert(result);	 }, 	 error:function (xhr,status,error) {   //请求失败事件 三个参数:XMLHttpRequest 象、错误信息、可选)捕获的异常对象		 alert(status);	 }         } );

(一)取数据:异步从服务器获取json数据

$.ajax({         url: "请求的网页地址",      dataType: "json",       success:function(result,status){   //请求成功事件。               $("#面板id").html(result);        },         error:function (xhr,status,error) {   //请求失败事件            alert(status);        }          });

(二)取数据:异步从服务器获取HTML或XML

$.ajax({        url: "请求的网页地址",     dataType: "html",     success:function(result,status){   //请求成功事件。          $("#面板id").html(result);      },       error:function (xhr,status,error) {   //请求失败事件           alert(status);      }         });

(三)提交数据

//第一步:客户端异步请求服务器网页提交数据  $.ajax({       url: "请求的网页地址",    dataType: "json",   //data:{参数名:参数值},//需要提交的json数据    data:$("#表单id").serialize(),//需要提交的表单数据    success:function(result,status){   //请求成功事件。       console.log(result);    },     error:function (xhr,status,error) {   //请求失败事件         alert(status);    }         });
//第二步:服务端接收数据 String v=Request["表单名称"]; //或者 String v=context.Request["表单名称"];

例题:获取数据(新建HTML页)

前端

产品价格 价格 Email

后端

public class ProductListJson : IHttpHandler    {           public bool IsReusable => false;        public void ProcessRequest(HttpContext context)        {               //设置输出的内容的类型            context.Response.ContentType = "text/plain";            //查询            meixinEntities db=new meixinEntities();            List
obj = db.m_product.ToList(); //将c#对象转换为JavaScript里面的json格式的字符串 //创建一个JavaScript序列化对象 JavaScriptSerializer jss = new JavaScriptSerializer(); //转换为json格式的字符串 string jsonstr = jss.Serialize(obj); //输出给浏览器 context.Response.Write(jsonstr); } }

创建处理程序==》》Web.config添加处理程序命令(ProductListJson )

例题:添加

前端

列表

后端

public class ProductAddJson: IHttpHandler    {           public bool IsReusable => false;        ///         /// 公开的接口:name 名称   price价格        ///         ///         public void ProcessRequest(HttpContext context)        {               context.Response.ContentType = "text/plain";            //接受客户端传递过来参数数据            string n = context.Request["name"];            string p = context.Request["price"];            //保存到数据库            meixinEntities db = new meixinEntities();            m_product obj = new m_product();//创建实体对象            obj.pname = n;            obj.price = Convert.ToDouble(p);            db.m_product.Add(obj);//添加到实体对象集合            db.SaveChanges();//同步到物理数据库            //返回给客户端结结果            var ret = new {    status = true, msg = "添加成功" };            //转换为json格式的字符串            //转换为jsog格式的字符串数据            JavaScriptSerializer jss = new JavaScriptSerializer();            context.Response.Write(jss.Serialize(ret));//调用方法将ret转换为json格式的字符串        }    }

创建处理程序==》》Web.config添加处理程序命令(ProductAddJson)

例题:删除

前端

产品价格 价格 口味 操作
添加

后端

public class ProductDeleteJson : IHttpHandler    {           public bool IsReusable => false;        ///         /// 公开的接口:name 名称   price价格        ///         ///         public void ProcessRequest(HttpContext context)        {               context.Response.ContentType = "text/plain";            //接受客户端传递过来参数数据            string id = context.Request["id"];            //创建数据库对象            meixinEntities db = new meixinEntities();            m_product o = db.m_product.Find(Convert.ToInt32(id));            db.m_product.Remove(o);//将0从实体对象集合移除            db.SaveChanges();//同步到物理数据库            //返回给客户端结结果            var ret = new {    status = true, msg = "删除成功" };            //转换为json格式的字符串            //转换为jsog格式的字符串数据            JavaScriptSerializer jss = new JavaScriptSerializer();            context.Response.Write(jss.Serialize(ret));//调用方法将ret转换为json格式的字符串        }    }

创建处理程序==》》Web.config添加处理程序命令(ProductDeleteJson)

三、正则表达式 规则

1、what:

regular expression ,描述了一种字符串匹配的模式(模板、模样 )(pattern) =》模糊查询

2、why:

可以用来检查一个字符串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等 (匹配包含、替换子字符串)

3、how:

由普通字符(abc)和特殊字符(元字符)组成字符模板

//a、引入命名空间using System.Text.RegularExpressionsstring zbj = "猪八戒提着200斤米高老庄提亲,被赶出来了";  //b、创建正则表达式对象 //Regex reg = new Regex(@"正则表达式"); Regex reg = new Regex(@"(\d{3})斤米");//c、调用Regex对象的匹配方法 reg.Match(path);Match match = reg.Match(path);//d、判断是是否匹配成功 if(match.Success){      Response.Write("猪八戒提亲成功。");  }//e、获取匹配项的子字符串match.Groups[1].Value if(match.Success){      Response.Write("猪八戒提亲成功。彩礼"+match.Groups[0].Value);  }

四、URL重写

what:

将网页真实的URL隐藏起来,使用户通过相应的虚拟URL访问网页资源以弥补真实URL的不足。常用于页面静态化技术,静态化技术:

a、伪静态(url重写) b、真静态 c、折中法

why:

a、满足搜索引擎需要,实现 搜索引擎中的排名优化 (SEO) =》将网页收录在搜索引擎数据库

b、隐藏网页实现技术,增强网站安全
c、提高网站的可用性和专业性 便于记网址

how:

1、urlMappings:url映射,不灵活,配置的地址是固定的,不支持通配符和正则表达式

2、正则表达式(通过过滤器)

using System.Text.RegularExpressions;//引入 private void Context_BeginRequest(object sender, EventArgs e){   HttpApplication contenx = sender as HttpApplication; //1获取网页访问路径  string path = contenx.Request.Path;//  /fff_4774_4664.html //2 创建一个正则表达式对象 匹配 访问路径path  如果是“字母_数字_数字.html”的格式  Regex reg = new Regex(@"\w+_(\d+)_(\d+)\.html");//3 调用reg的匹配方法 拿着 模板去与字符串 pathMatch match = reg.Match(path);  if (match.Success) {        //重定向 跳转到真实的页面     //contenx.Response.Redirect("/money.aspx");     //转发  转发后的地址不在浏览器显示出来     contenx.Server.Transfer("/money.aspx?id="+match.Groups[1]+"&price="+ match.Groups[2]);  }}

3、使用URLRewriter 第三方插件

a、引入第三方类库

b、在web.config文件中配置访问规则

~/goods_(\d)+\.html
~/goodsList.aspx?id=$1
上一篇:pycharm左侧工程显示栏只剩新打开的project,找不到之前工程解决方法
下一篇:nginx配置文件nginx.conf详细讲解(1)

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月30日 00时17分05秒