php+ajax相关笔记(一)

1.php单双引号
◆'  ' :不管写的是什么,都是以纯字符串显示
◆" " :如果写的是变量名,会显示变量的值


2.在线文档
◆http://www.w3cschool.cn/ 搜索直接可用
◆http://www.w3cschool.com.cn/ 只有FQ才可搜索,可以使用FQ软件lanterm。


3.提交数据的方式
◆get:url能够看到参数、有数据大小的限制、url长度是有限制的
◆post :url看不到参数、提交的数据大小是没有限制的、用来上传文件给服务器


4.php中的二维数组,表示在一维数组中再放数组,就是二维数组了
◆普通二维数组【
$arr=array(
array("元素1","元素2"),
array("元素1","元素2"),
array("元素1","元素2"),
array("元素1","元素2")
);

◆关系型二维数组【
$parr=array(
'jack'=>array('name'=>'杰克','age'=>30),
'rose'=>array('name'=>'柔丝','age'=>24)
);



5.php中输出变量的详细内容
◆print_r():php预定义的函数,传递参数 直接放入括号中即可。
◆var_dump():php预定义的函数,传递参数 直接放入括号中即可。


6.使用表单上传文件注意
◆表单的提交方式必须是post
◆表单必须设置属性 :enctype="multipart/form-data"
◆然后上传文件需要 一个 <input type="file" name="myfile" /> 标签
◆需要点击提交按钮 ,<input type="submit" value="提交" />


7.文件上传后,php服务器端会暂时将上传的文件保存为一个临时的文件,当这个php文件中的代码全部执行完毕后,这个临时文件会被删除掉,所以需要在这之前把这个文件保存下来
◆move_uploaded_file(tempAllFilePath,newAllFilePath);表示将上传的文件移动到另外一个位置并且改变文件名。
◆php服务器端通过超全局变量$_FILES来进行获取,$_FILES是一个二维的关系型数组。


8.在php中使用 sleep方法 进行阻塞线程来达到延时的效果
◆sleep(5);//延时5秒


9.php默认上传文件大小限制为10M,修改php上传文件大小的方法是,打开C:\wamp\bin\php\php5.3.10文件夹,修改php.ini文件
◆设置文件最大上传限制(值的大小可以根据需求修改)【
◇file_uploads = On   ; 是否允许上传文件 On/Off 默认是On
◇upload_max_filesize = 32M       ; 上传文件的最大限制
◇post_max_size = 32M             ; 通过Post提交的最多数据

◆考虑网络传输快慢,这里修改一些参数【
◇max_execution_time = 30000      ; 脚本最长的执行时间 单位为秒
◇max_input_time = 600            ; 接收提交的数据的时间限制 单位为秒
◇memory_limit = 1024M            ; 最大的内存消耗

★修改完毕之后,重新启动wamp所有服务。




10.在http协议中无论是get请求还是post请求都是不安全的,因为可以通过抓包工具(fiddler_抓包工具等等)来抓取账号和密码,账号
和密码都在请求报文中。


11.http协议的请求报文和响应报文

◆请求报文:请求行、请求头、请求主体这三部分组成。
◇请求行:请求的方法(get、post..)、请求的url、HTTP协议及版本这三部分组成。
◇请求报文头:一些以键值对组成的关于客户端及服务器端的信息【
△User-Agent:浏览器的具体类型  如:User-Agent:Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0
△Accept:浏览器支持哪些数据类型  如:Accept: text/html,application/xhtml+xml,application/xml;q=0.9;
△Accept-Charset:浏览器采用的是哪种编码  如:Accept-Charset: ISO-8859-1
△Accept-Encoding:浏览器支持解码的数据压缩格式  如:Accept-Encoding: gzip, deflate
△Accept-Language:浏览器的语言环境  如:Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
△Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。Host:www.baidu.com
△Connection:表示是否需要持久连接。Keep-Alive/close,HTTP1.1默认是持久连接,它可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。如:Connection: Keep-Alive
△Content-Length:表示请求消息正文的长度。对于POST请求来说Content-Length必须出现。
△Content-Type:WEB服务器告诉浏览器自己响应的对象的类型和字符集。例如:Content-Type: text/html; charset='gb2312'
△Content-Encoding:WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。例如:Content-Encoding:gzip
△Content-Language:WEB服务器告诉浏览器自己响应的对象的语言。
△Cookie:最常用的请求头,浏览器每次都会将cookie发送到服务器上,允许服务器在客户端存储少量数据。
△Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。服务器能知道你是从哪个页面过来的。Referer: http://www.baidu.com/

◇请求报文体:既提交给服务器的数据,需要注意,如果是使用ajax往服务器提交数据,需要在请求头中设置Content-Type: application/x-www-form-urlencoded(手动设置),使用form表单提交时默认已经设置了这个属性。

◆响应报文:由状态行、响应头、响应主体三部分组成。
◇状态行:响应报文协议及版本、状态码及描述这两部份组成。
◇响应头:设置Cookie,缓存等信息就是在响应头属性设置的。

△Cache-Control :响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。 Cache-Control: max-age=3600,这个设置是让客户端对响应内容缓存3600秒,也即在3600秒内,如果客户再次访问该资源,直接从客户端的缓存中返回内容给客户,不要再从服务端获取(当然,这个功能是靠客户端实现的,服务端只是通过这个属性提示客户端“应该这么做”,做不做,还是决定于客户端,如果是自己宣称支持HTTP的客户端,则就应该这样实现)。
△ETag:一个代表响应服务端资源(如页面)版本的报文头属性,如果某个服务端资源发生变化了,这个ETag就会相应发生变化。它是Cache-Control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源,什么时候可以直接从缓存中返回响应,ETag:"737060cd8c284d8af7ad3082f209582d"。
△Location:我们在Asp.net中让页面Redirect到一个某个A页面中,其实是让客户端再发一个请求到A页面,这个需要Redirect到的A页面的URL,其实就是通过响应报文头的Location属性告知客户端的,如下的报文头属性,将使客户端redirect到iteye的首页中:Location: http://www.google.com.hk。
△Set-Cookie:服务端可以设置客户端的Cookie,其原理就是通过这个响应报文头属性实现的,Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1。

◇响应体: 如果请求的是HTML页面,那么返回的就是HTML代码。如果是JS就是JS代码。
◆常见的响应状态码:【
◇100-~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。
◇200-299:表示成功接收请求并已完成整个处理过程。
◇300-399:未完成请求,客户需要进一步细化请求。例如,请求的资源已经移动到一个新地址,或者当前页面已经被浏览器缓存。
◇400-499:客户端的请求有错误。
◇500-599:服务器端出现错误。




12.ajax的简单介绍
◆在页面不刷新(不会重新解析渲染整个页面)的情况下给服务器发送信息并返回结果。
◆网页都是默认同步刷新(会重新解析渲染整个页面)的,异步刷新(局部刷新)可以通过js来模拟。
◆通过ajax模拟异步请求发送【
1.创建异步对象
var ajaxObj=new XMLHttpRequest();
2.设置请求的url等参数
ajaxObj.open("get","ajax.php",true);
3.发送请求
ajaxObj.send();
4.注册事件
ajaxObj.onreadystatechange=function(){
if(ajaxObj.readyState==4 &&ajaxObj.status==200){
//获取返回的内容
console.log(ajaxObj.responseText);//响应的文本
}
}
5.在注册的事件中 获取返回的内容 并修改页面的显示

◆异步对象的open方法
◇设置参数:请求方式、请求发送的目标url,是否异步发送
◇ open(method,url,async)
◇method:请求的类型;GET 或 POST
◇url:文件在服务器上的位置
◇async:true(异步)或 false(同步)
◆异步对象的send方法
◇send(string)
◇将请求发送到服务器
◇string:仅用于 POST 请求
◆post请求与get请求不一样【
//设置参数
xmlhttp.open("POST","ajax_test.php",true);
//设置请求头,get方式不需要设置请求头
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//post请求方式的传递参数
xmlhttp.send("fname=Bill&lname=Gates");

◆onreadystatechange事件:存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
◇readyState:存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
△0: 请求未初始化
△1: 服务器连接已建立
△2: 请求已接收
△3: 请求处理中
△4: 请求已完成,且响应已就绪

◇status:状态码(200: "OK"、404: 未找到页面)
◆ajax获取到的服务器响应内容:如果响应返回的是普通字符串,使用responseText,如果响应返回的是XML,使用responseXML。【
◇responseText:获得字符串形式的响应数据
◇responseXML:获得 XML 形式的响应数据。






13.ajax的两种请求方式
◆get方式【
var ajaxObj=new XMLHttpRequest();//创建ajax对象
ajaxObj.open("get","ajax.php?userName=jack",true);//设置参数
ajaxObj.send();//发送信息
ajaxObj.onreadystatechange=function(){//监听事件
if(ajaxObj.readyState==4 &&ajaxObj.status==200){
//获取返回的内容
console.log(ajaxObj.responseText);//响应的文本
}
}
】,传递参数直接在url地址的后面使用queryString的方式传递:url?key1=value1&key2=value2。
◆post方式【
var ajaxObj=new XMLHttpRequest();//创建ajax对象
ajaxObj.open("post","ajax.php",true);//设置参数
ajaxObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//设置请求头(post请求时必须手动设置)
ajaxObj.send("userName=jack");//传递数据发送信息
ajaxObj.onreadystatechange=function(){//监听事件
if(ajaxObj.readyState==4 &&ajaxObj.status==200){
//获取返回的内容
console.log(ajaxObj.responseText);//响应的文本
}
}
】,传递参数直接在send方法中传递。
★旧版本的浏览器(IE5 和 IE6)创建异步对象是使用【
var ajax=new ActiveXObject("Microsoft.XMLHTTP");
,所以创建异步对象的兼容性写法是
var ajax;
if(XMLHttpRequest){
    // 新式浏览器写法
    ajax = new XMLHttpRequest();
 }else{
    //IE5,IE6写法
    ajax=new ActiveXObject("Microsoft.XMLHTTP");
 }



14.常见的ajax请求的引用
◆验证用户名是否存在
◆发送验证码
◆微博,朋友圈更新内容
◆发送手机号给服务器


15.触发ajax请求的方式
◆按钮的点击事件
◆文本框失去焦点
◆滚动事件





posted @ 2018-06-12 04:38  我叫贾文利  阅读(96)  评论(0编辑  收藏  举报