Ipan笔记-2
其实二级联动下拉选择框很简单的, 参考: https://www.cnblogs.com/zhangmiaomiao/p/6013533.html
==============
关于$.each和 $().each()的区别
前者可以遍历任何对象或数组, 后者只能遍历jquery的对象数组;
后者由于已经明确指出了被遍历的对象, 因此,each后面的参数就只有一个, 即回调函数了,而前者由于没有指明被遍历的对象,所以第一个参数是 被遍历的数组或对象,第二个参数才是回调函数
既然是遍历,在后面的callback函数中的参数,就是直接、已经从被遍历的对象、数组中取出来的子元素了,不再是原来的对象或数组
如果是遍历数组, 则回调函数中的第一个参数是元素的下标索引数字,从0开始, 比如: 0,1,2...第二个参数是数组元素的值; 如果是遍历的对象,比如: {name:‘jack’,age:20,address:‘some place'} 则回调函数中的第一个参数不再是下标数字了,(对象没有下标的概念)表示的是 对象中成员变量的名称即: mem_name, 比如:name, age, address.第二个参数是成员变量的值,比如: jack,20,...
这个遍历中, 类似for或 while结构, 但是循环的控制, 不再是用break或 continue, 而是用 return false=break,或 return true=continue来控制。
<script>
var arr=[1,3,5];
var obj={name: 'jack', age: 20, address: 'Street Lincon'};
$.each(arr, function(i, x){
alert("this is " +i +" element and value is: " + x);
});
$.each(obj, function(mem_name, mem_value){
alert("this is '" + mem_name +"' element and value is: " + mem_value);
});
</script>
ajax中的 $.get(), 和 $.getJson()的区别?
其实两者都是差不多的,只是前者由于没有指明服务器返回数据的类型,所以要在最后一个参数中指明’json’,而后一个函数由于已经明确说了 getJson, 所以就不用写返回类型了, 最多就是三个参数。
** jquery中的val函数,是一个专门的函数,就是用来获取表单中各种输入控件的值。比如select选择框的值:$('select').val()
**
$(...).remove和empty的区别?
$(...).remove从字面上的意思,就可以知道, 它是要 (从dom树节点上)删除 被匹配的元素(集合)本身!
$(...).empty, 被匹配的元素,本身不会被删除,只是会清空(删除)它的所有子节点。
同时,要注意, 很多jquery函数的使用方法,比如: $('...').func_name(...)本身可以不带参数, 那么所有被匹配的元素节点都要执行func_name的动作, 也可以在func_name中 指定 过滤选择器, 那么就只是从 匹配元素集 中 再次选择过滤一次, 然后执行动作。
=======================
jquery中的方法(函数)调用, 是要传递一个参数, 比如:change等, 函数参数不能是 一个语句. 但是可以是 一个 匿名函数: $('select').change(funciton(){...} );
jquery中如何判断一个元素是否显示出来了? (是否存在?) 使用 is 函数 $('selector').is(":visible");
===============
jquery中的事件 和 dom元素的事件的 区别?
- dom元素绑定事件的时候, 原生态的用onclick之类的.
- 而jquery中的绑定事件, 用的是 click函数 注意此时就不再加on了.
事件和方法的区别? 再次说一下:
- 方法是 调用的时候, 马上就执行!
- 而事件是一种伺服机制, 写上事件函数的时候, 函数并不会马上执行, 只有当相应的事件发生时, 函数才会执行. 要注意, jquery中的 click() 是事件而不是马上就会调用的方法!
jquery中的is函数非常重要: is(selector|obj|element|function)
is函数的参数 可以有4种:
- selector, 判断前面的对象, 是不是 符合 参数指定的 选择器(基本上是 冒号选择器), 可以是 所有的选择器, 比如 :visible, :hidden, :input等等
- obj, 是一个jquery对象
- 元素, 判断是不是一个dom元素
- 函数: 当对每个循环元素进行is 判断的时候, 不是为了 判断这个对象是什么, 而是要 判断 某个 事实, 某种情况的时候, 就可以 使用 function...., 然后在function中 通过return 返回false或true...
### jquery中的选择器, 有很大一类是 冒号选择器(具有 判断 性质的 false/true性质的) 选择器, 除了三种: 基本选择器(类/id/元素) + 层级选择器 + 属性[] 选择器之外, 其他的都是冒号选择器. 也就是 :伪类选择器
data-toggle 和datat-target作用
toggle是切换的, 表示 该元素 要去控制什么动作,
target是目标, 表示该元素控制的 是哪个目标的 动作
比如 li或 a, 的属性data-toggle是控制其他元素的collapse切换动作. 那么是控制 哪个元素的 collapse动作呢, 通过在 li/a 中指定 data-target来确定
所以 被控制的div 必须要有 collapse 类样式, 而其中的 in 类样式, 表示 进入 打开的意思, 在初始的时候, 是折叠的还是显示的.
折叠可以是针对单个的div, 也可以是 一组/多个div对象的相互折叠, 这个就是 手风琴/折叠面板组, 这个时候, 就要指定每个可折叠 div的 父元素 data-parent.
easyui中 , 要使用图标, 采用的样式类是 iconCls, 这个是通用的, 在整个easyui中都是这样应用的: 在tabs标签组中, 要只是显示标签title, 不要 标签后面的条块(背景) 就使用 选项: plain: true.
===========================
mysql的describe命令
- mysql中的命令 通常没有省略的, 不可以省略, 是 完整的 动词;
- describe 后面直接跟 "表名table_name", 不需要 关键字 table
- describe是 "show columns from .." 的简写
**php中的变量定义: **
= 凡是在$ 符号后面紧跟一个字符串, 就认为是一个php变量;
= php不像c语言, 不支持 给变量: 只定义 不赋值, 赋值初始化的时候, 就是给变量定义了
= php支持 "可变变量" 即: 两个$ $$var
变量的值, 是另一个变量的名字
= 不能像C, javascript等语言一样, 在一行内定义多个 变量, 只能一行定义一个 变量! 即$a=1,$b =2 ;
是错误的
在tp中引入js和css文件
不再使用link和script标签, 直接使用load标签href属性, load标签会自动根据href文件的扩展名来判断类型, 而js和 css是load标签的别名, 语义更清晰.
注意css中 表示 层级 关系 的 几个单词的区别
parent和 child 是父母 和 子女的意思: child 除了小孩这种 广义的泛指之外, 还表示 "自己的子女"!! 所以表示 父子/父母和子女, 不用father/son, 而是用 parent 和 child
ancestor & decendant是 祖先 和 后代/后裔的关系, 不一定是 父母/子女这种直接一代的关系, 可以 所有的 隔了多代的关系.
previ+Next 表示 上一个和下一个, 就是它们之间必须是紧挨着的(当然,而且它们的层级是一样的, 都有共同的父辈parent)
prev~siblings, 表示的是 A元素 后面的 所有同辈, 在层级上是一样的, 都有相同的parent, 但是它们的顺序不一定是紧挨着的. 所以 ~sibling是包含+的, + 是~siblings的特例
jquery的文档说得很清楚, 表示层级关系的就只有这四种:
A B 表示 祖先 子孙 (包括子辈和孙辈...)
A>B表示 父母和子女
A+B表示A后面的 紧挨着的兄弟元素;
A~B表示 A后面的 同辈元素(不一定是紧挨着的)
需要注意的是, 在所有的 层级关系中, 最后选出来的 元素, (样式应用的对像是 B , 不会应用的A元素上) : 都 "落脚于" 后面的那个元素 B 上, 所有的 B元素 都是 A元素 的位置之后的 , 即:都表示: A 后面的 元素B 将要应用的样式! 因为这里使用的是 Prev (这个Prev是前面的, 就表明了它们之间的 在位置上 的 先后关系! ) + 和 ~ 的兄弟元素和 同辈元素 是不包括该元素 前面的 元素的!
所以 使用 加号表示兄弟元素 , 可以起到一些特殊的 选择作用, 比如: <style> li+li{....} 表示 li元素后面 的紧邻 那个li元素将要应用的样式
通常 在多个相同元素中使用 加号 , 会让中间元素应用样式, 但是 第一个元素和最后一个元素 不会被 应用样式, 因为第一个元素之前没有其他元素, 最后一个元素之后没有兄弟元素.
要选出 第一个 子元素. 不能使用 层级 选择符. 因为层级选择符 选出的都是 集合. 是符号条件的所有元素. 所以 要选择第一个 或第一个子元素 , 要使用 冒号选择器(也叫 伪类选择器, 因为 伪类 就是用冒号来表示的 比如 :class) 即 : :first, :first-child, :last-child
======================
css中的 float和position的区别?
- bfc( "谐音:不服从") 表示的是 块级元素 格式化上下文, 表示 html中元素的排列顺序, 总是 块级元素从上到下, inline元素 从左到右
- float是浮动, 是 属于排版 "图文混排"的语义,
- position是真正的定位, 要实现 一个元素 b 相对于另一个元素A位置内 定位, 必须要求 父元素 A必须为 position: relative , 不能是static.
- 正因为, 它们都能在一定程度上 实现相同的效果, 所以 容易混淆 它们的区别, 在于 是否从 文档流中 脱离.
但是: 不管是 float 还是 position, 都不能 忽略 位于 它们前面的 块级元素, 比如h2, div等 , 这些div或 h2等块级元素由于 要占据 整个整行, 会将它们 挤下来... 因此 就 只能排列在这些块级元素的下面!
=================
要清楚php进行 json编码的规则:
- 如果是 一维数组(没有索引名称的), 则直接编码为 json 数组 , 比如:
[1, 2, 3, 'name', true]
- 如果是一维数组而且 有索引名称的, 则编码为 json 对象, 其中 索引名称为键名, 比如:
{'name': 'jack', 'age': 10, 'addr': 'st2'}
- 如果是二维索引数组, 则编码为json数组, 同时每个元素为一个json对象
[{'name': 'jack', 'age': 10, 'addr': 'st2'}, {'name2': 'jack', 'age': 10, 'addr': 'st2'}, ...]
- 如果是单个的数字 或 字符串, 编码后, 还是单个的数字或字符串, 不会改变.
####如何调试 ajax传递到php后台的错误?
- 由于 在调试 ajax传递到后台的时候, 无法看到/甚至无法调试 后台php文件的错误, 所以跟踪发现问题就很困难, 这时, 应该 选择将 ajax的get, 或 post 传递回来的数据 用 console.log (debug_info) 打印出来. 那么在控制台就会看到 php后台出错的错误信息报告
- 最关键的是, 要看到php远程ajax 页面传递回来的是 html错误报告页面, 就要在post或get中将 dataType明确地设置为 "text,或html,或不设(会自动根据http包的mime信息来判断返回数据的类型)", 但是不能设置为 'json'! 因为设置为 json的话, 就看不到错误信息了!
也就是说, 要是怀疑 ajax出错了的话, 就要将dataType返回类型改为 html, 而不能是看不到错误信息的json
![](https://img2018.cnblogs.com/blog/821299/201812/821299-20181222174444183-858522871.png)
- 可以在调试时, 开始不忙传递数据进去, 看最简单的情况下, 能不能ajax成功, 就可以看到 是否将ajax请求传递到 后台页面了
function name must be a string? 是说 当我们错误地把 全局变量 , 比如 $_POST, $_COOKIE,$_GET等的元素, 本来应该是 中括号的, 却错误地写成了小括号, 比如:$_post('name') 那么: 因为后面有括号, 首先把它当做是一个函数 调用, 而前面的 $_post 又是以$开头的, 就认为是一个变量, 而变量是不能做函数名的, 必须是用字符串来做函数名
在ajax 的后台处理页面php中, 确实是用 $_POST['name']之类的 来接收 ajax传递过去的数据的, (当然ajax type是post的). 是能够正确的取到的, 如果要查看, 或怀疑数据没有传递过去, 或传递有问题, 你可以直接将 接收到的数据 直接组装成 json结果反回来在 js 控制台查看.
传递的数据 , 确实是写成 js 键值对 对象 形式!
为什么在$.ajax应用中, 出现错误提示: jquery.js的第2行, TypeError: invalid in operand a?
- 这是由于在 ajax应用中,对从php返回的json数据进行处理时, 调用了jquery中的函数each函数, 而each函数要求的 "in"operand 输入操作数, 必须是一个 javascript的数组或对象.但是 从php返回的json数据 在js看来,只是一个 字符串!! 不是数组或对象. 所以会提示 TypeError
- 而这里调用的 each函数, 是jquery.js中的一个函数, 正好位于jquery.js文件中的第二行...
- 解决方法是: 将这个ajax返回的"字面上是对象" 的字符串, 转换为真正的js 数组或对象,方法是: 用javascript语言本身提供的 "JSON"对象的相关方法:
JSON.parse(json_format_string) => 得到js的数组或对象
, 而JSON.stringify(js字母对象) => Json格式的字符串
// javascript中的ajax语句
$.post('/index.php/Home/Index/ajaxHand',{'zyb':zyb,'nj':nj},function(ajaxRet){
.....
var res = JSON.parse(ajaxRet);
console.log('返回结果:'+res);
});
// 控制器中的方法 ajaxHand
public function ajaxHand(){
$zyb = $_POST('zyb');
$nj = $_POST['nj'];
$Class = M('class');
$res = $Class -> where(array('zyb'=>$zyb, 'nj'=>$nj)) -> getField('bj',true);
echo json_encode($res);
}
localhost 和 127.0.0.1的区别? 参考 https://blog.csdn.net/JkunZhang/article/details/6066158
- localhost叫 本地 服务器, 而 127.0.0.1 是本机 服务器ip地址.一个叫 本地, 一个叫 本机, 两者通过host文件进行 转换.
- localhost 不经过网卡, 不受防火墙和网卡ip地址等的限制; 127.0.0.1 是一个ip地址, 要经过网卡, 要受防火墙和网络地址的限制;
- localhost不会占用网络资源? 127.0.0.1 和其他ip地址的区别是, 前者 只能通过本机访问, 后机器的本机ip地址 可以从 其他机器访问;
- 建议通过localhost来访问, 因为 使用 localhost来访问, 是 以当前 本地用户的(控制台的用户) 身份来访问的; 而ip地址访问是以 访客 身份来访问的.
- 在windows下 localhost 的访问协议 是 TCP/ip 而linux下是 通过 unix socket 套接字来访问的. 所以 有时候会出现 localhost不能访问, 而127地址可以访问的现象,但是 win上没有这种情况.
==========================================
mysql中的 mysql.user表中存放的是 当前 数据库中 有哪些用户, 以及它们的权限等信息, 而 information_schema数据库是存放的当前 运行的 数据库/表的 信息, 是从其他数据库(主要是mysql数据库)中提取信息的 "视图", 所以 很多表 没有 真实的/对应的实体文件. 其中的 information_schema. user_privileges表是存放的当前 内存中, 已经运行的 用户信息和权限.
- 由于 mysql中 有一个 默认的 普通用户, 是 匿名用户, 是 空'' 用户 :
''@'localhost'
是 很低的用户, 它只有 usage的功能和操作 (只能操作 test数据库) , 没有 grantable, 所以 只能用来 操作 普通的用户自己的数据库, 不能操作 其他系统 数据库. 包括 一般不能创建 新的 数据库等.
#### 当在 url地址后 使用get方法传递参数时, 一定要注意 name=value 传值对中的值, 不能再加 (单/双)引号了, 因为这个值 会按原样 raw的 样子 , 原原本本的赋值给 接受变量. 从而使得 接受到的值带有 多余的 引号, 引起 后面的数据库查询的时候, 出错!
Ipan笔记-2的更多相关文章
- ipan笔记
// 对于mysql来说, 如果字段没有设置其 default值, 则会自动 设置 default值为null.同理没有设置not null, 则会自动允许null =yes // create ta ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
- springMVC学习笔记--知识点总结1
以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
随机推荐
- python3 小工具
扫描IP的端口是否开放:Porttest.py # -*- coding: utf-8 -*- import sys import os import socket #扫描 def scanport( ...
- [转]常见的JavaScript内存泄露
什么是内存泄露 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存.内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制, ...
- 在eclipse中使用Tomcat时出现Could not publish server ...错误
在使用eclipse加载tomcat服务器运行项目时遇到问题: 在Tomcat的安装目录下的\conf\server.xml中将<Context>标签所对应的重复名称项目删除 这 ...
- python接口自动化测试(c测试环境的准备)
接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的进行选择,甚至当 ...
- 27.用webpack自搭react和vue框架
自己搭建react-app vue-cli 前置条件 cnpm i -D webpack webpack-cli webpack-dev-server cnpm i -D css-loader sty ...
- 13、cookie
一.cookie: 1.cookie cookie的应用: 1.用户名密码 自动登录 2.购物车商品的保存. <1>缓存信息,只存储特定的重要的信息.程序编程完成.缓存信息cookie技术 ...
- ERP项目实施记录09
今天报价软件测试版本出来了,可看上去不怎么像是一款报价的软件,整个界面上都没有"报价"相关的字眼: 软件标题就不说了,反正影响不大,就当没看见,可左边这一大片菜单里也找不到和报价有 ...
- Codeforces 607A - Chain Reaction - [DP+二分]
题目链接:https://codeforces.com/problemset/problem/607/A 题意: 有 $n$ 个塔排成一行,第 $i$ 个激光塔的位置为 $a_i$,伤害范围是 $b_ ...
- PowerPoint使用技巧
1.右键Group两个元素,可以一起移动: 2.Insert 屏幕输入功能: 3.录制旁白: 4.录制完旁白之后可以生成视频: 5.如果不确定所有引用的组件是否可以在别的机器上使用,可以导出只CD,生 ...
- pandas 2
============== sdf={'rkey':[1,2,3,2],'name':['rkey1','rkey2','rkey3','rkey4']}sdf2={'lkey':[1,2,3],' ...