笔记小结(一)

     这笔记是我刚上项目的小白写了点自己的薄弱点,加深记忆,保存可以回顾一下 

                    JSON            

我是上了项目才第一次触摸到json的 懵懵懂懂的做了下去 所以花了一点时间稍微写一下,加深理解

Json 有两种表示结构  : 对象和数组

   {a:b,c:d,…..}   ;  [{a:b,c:d,….},{e:f,…..}…..]

  所以 前台 得自己建一个json

  对象的例子:

结果:

数组的例子:

结果:

以上的两个例子都很简单,无非就是这两种建json的方法,还有的就是组合嵌套了

  导入接口当初不了解json,导致想不出数组的方法,浪费了很多时间,这边记录一下

至于json的解析,hap框架已经封装好了,自动注入json的 key对应的java类的对象

Json字符串解惑

还有最重要的一点就是,为什么有的时候得传 json的字符串格式

我这里先举个例子:把上面的person

输出结果:

发现只是key加了双引号

        再把上面的people

输出结果:

发现和上面的people还有很大的区别

  如果前台传递多个类格式的Json数组,也就相当于上面的people,不将数组对象转换为Json字符串传递的话,会报错

还有穿第二个参数,第三个参数的问题,后续研究,stringify的差别更大,具体看:

   http://www.jb51.net/article/29893.htm

至于倒过来转换:

JSON.parse(string)   字符串----àJson

jQuery中也有将字符串转为JSON格式的方法jQuery.parseJSON( json )(标准的字符)

ajax两个属性的解惑

contentType的作用:

需要通过JSON.stringify(param)把页面中获取的参数变成json字符串,,此时需要加上contentType: "application/json",

 也就是使用使用contentType: “application/json”则data只能是json字符串

DataType:

注意  这不是request过去的类型,而是response回来的类型

     dataType:预期服务器返回的数据类型                     *              "xml": 返回 XML 文档,可用 jQuery 处理。

                           "html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。

             "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)

                                             "json": 返回 JSON 数据 。

"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

                            "text": 返回纯文本字符串

正则表达式

当初完全都没有正则表达式概念,遇到也也是通过上网查找解决,所以还是得学一学

网址:https://c.runoob.com/front-end/854    (正则表达式自动匹配和生成代码)

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。

基础

1 正则表达式 : cat  匹配:cat, catlog,  Cather.., zxxxcatxx

   搜索对大小写不敏感

2 句点符号 t.n 匹配t开头,n结束的三个字符

3 方括号符号 在里面只能匹配单个字符 a[sjf]b,匹配asb ajb  Afb

4 或符号 匹配多个字符  a(oo|c)b 匹配aoob acb 注意这边是圆括号

5

[0-9]{3}\-[0-9]{2}   代表格式 999-99的数字串

[0-9]{3}\-?[0-9]{2}  代表连接符-可以不出现

7   正则表达式 \w \s \d \b

. 匹配除换行符以外的任意字符

\w 匹配字母或数字或下划线或(汉字) 等价于 '[^A-Za-z0-9_]'。

\s 匹配任意的空白符

\d 匹配数字

\b 匹配单词的开始或结束

^ 匹配字符串的开始

$ 匹配字符串的结束

8 字符簇 通常以[ ] 包起来 [0-9] 表示任何一位数字  [^0-9] 表示非 (放在方括号里)

简单例子

   ^[a-zA-Z0-9_]+$      // 所有包含一个以上的字母、数字或下划线的字符串

^[1-9][0-9]*$        // 所有的正整数

^\-?[0-9]+$          // 所有的整数

^\-?[0-9]+\.?[0-9]*$ // 所有的浮点数

  /Ch [1-5]/  匹配Ch 1  Ch 2..Ch 5    注意 Ch和后面的空格是对于中括号里的字符是固定的

 二

/\b([a-z]+) \1\b/gi              一个单词连续出现的位置

/ter\b/               可匹配chapter,而不能匹配terminal。

/^\s*$/                  匹配空行。

^.{3}$            任意三个长度的字符串

/\d{2}-\d{5}/          验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。

我这里对/b 和 /B 不理解,多做一下解释

  \b代表单词边界

   单词边界就是单词和符号之间的边界

这里的单词可以是中文字符,英文字符,数字;符号可以是中文符号,英文符号,空格,制表符,换行   还有 空格并不是边界

 这里举一个简单的例子(Java的正则)

  代码正好与收款接口的soap报文转化为java对象的那几句代码一样,步骤是一样的

 

这边把第一次遇到正则 验证18位字符的拿出来 看看 发现好简单(js的正则)

看了网上好几个例子  发现 js有三种 验证的方法

  这边给区分一下

 test 返回 Boolean,查找对应的字符串中是否存在模式。(RegExp对象)

exec 查找并返回当前的匹配结果,并以数组的形式返回。没有发现匹配,则返回null

 (RegExp对象)

match 是 String 对象的一个方法,和exec方法类似

Ajax

属性:

   dataType:预期服务器返回的数据类型                                "xml": 返回 XML 文档,可用 jQuery 处理。

                           "html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。

             "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)

                                             "json": 返回 JSON 数据 。

"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

                            "text": 返回纯文本字符串

success方法

.success:要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。
         (1)由服务器返回,并根据dataType参数进行处理后的数据。
         (2)描述状态的字符串。
         function(data, textStatus){
            //data可能是xmlDoc、jsonObj、html、text等等
            this;  //调用本次ajax请求时传递的options参数
         }

同步异步

async: false 也就是这个属性  默认为true 也就是异步

我项目上遇到的问题

使用ajax加载数据返回页面并赋值,然后前端取出该值

这其中涉及到代码的顺序问题,有时后台还未返回数据,但已执行后面代码,

所以就会造成取不到值

解释:

这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。 
而异步则这个AJAX代码运行中的时候其他代码一样可以运行。 

但是同步太多,容易造成用户体验不佳

绝对定位和相对定位

Css3中 API对position属性的定义:

    static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。

     relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。

     absolute:对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。

     fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性定义。

什么是文档流?

      将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流。

      只有三种情况会使得元素脱离文档流,分别是:浮动、绝对定位和相对定位。

相对定位(relative) :

      relative定位,又称为相对定位  我在这需要理解的就是相对定位

相对定位相对的是它原本在文档流中的位置而进行的偏移

也就是说它后面的元素是依据虚线位置( top / left / right / bottom 等属性生效之前)进行的定位

绝对定位(absoulte)

absoulte定位,也称为绝对定位

使用absoult定位的元素脱离文档流后,就只能根据祖先类元素(父类以上)进行定位,而这个祖先类还必须是以postion非static方式定位的

 举个例子,a元素使用absoulte定位,它会从父类开始找起,寻找以position非static方式定位的祖先类元素(注意,一定要是直系祖先才算哦~),直到<html>标签为止,这里还需要注意的是,relative和static方式在最外层时是以<body>标签为定位原点的,而absoulte方式在无父级是position非static定位时是以<html>作为原点定位。

我们如果使用absoulte或fixed定位的话,必须指定 left、right、 top、 bottom 属性中的至少一个,否则left/right/top/bottom属性会使用它们的默认值 auto ,这将导致对象遵从正常的HTML布局规则,在前一个对象之后立即被呈递简单讲就是都变成relative,会占用文档空间

  1. 如果top和bottom一同存在的话,那么只有top生效。
  2. 如果left和right一同存在的话,那么只有left生效。

参考文档:http://blog.csdn.net/cyyax/article/details/50607066

http

了解一下http请求

HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:

(1)    建立TCP连接

(2)    Web浏览器向Web服务器发送请求命令

(3)    Web浏览器发送请求头信息

浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

(4)    Web服务器应答

客户机向服务器发出请求后,服务器会客户机回送应答,

HTTP/1.1 200 OK

应答的第一部分是协议的版本号和应答状态码

(5)    Web服务器发送应答头信息

(6)    Web服务器向浏览器发送数据

Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

(7)    Web服务器关闭TCP连接

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码

Connection:keep-alive

 

1       请求方法URI协议/版本

请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1

2) 请求头(Request Header)

Accept: text/html,image/*    浏览器通过这个头,告诉服务器它所支持的数据类型
Accept-Charset: 浏览器通过这个头,告诉服务器它采用的字符集
Accept-Encoding:浏览器通过这个头,告诉服务器,它所支持的压缩格式
Accept-Language:浏览器通过这个头,告诉服务器,它所采用的语言
Host:浏览器通过这个头,告诉服务器,我想访问服务器哪台主机
If-Modified-Since:浏览器通过这个头,告诉服务器,它缓存数据时间是多少。
Referer:浏览器通过这个头,告诉服务器,我是从哪个网页点过来的(防盗链)
User-Agent: 浏览器通过这个头,告诉服务器,当前浏览器操作系统的信息,以及浏览器的版本号
Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间

3http响应头:
Location:这个头通常配合302状态码使用,它用于告诉浏览器你去找谁。
Server告诉浏览器,服务器的类型
Content-Encoding: 服务器通过这个头,告诉浏览器,回送的数据采用的压缩格式。
Content-Length: 80 
Content-Language: zh-cn 
Content-Type:这个头用于告诉浏览器,回送数据的类型
Last-Modified:这个头用于告诉浏览器,数据的最后修改时间
Refresh: 这个头用于控制浏览器定时刷新
Content-Disposition: 用于通知浏览器,以下载方式打开回送的数据
Transfer-Encoding: 用于通知浏览器,数据是以分块形式回送的
ETag: 缓存相头的头
Expires: 用于说明网页的失效时间,如果该值为一个<0的值,则服务器是通知浏览器不要缓存
Cache-Control: no-cache  通知浏览器不要缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值