Ajax和Php从入门到欲罢不能。

Ajax:
—— 不刷新整个页面的情况下,通过url地址获取★服务器的数据★,然后进行页面的局部刷新(异步加载)

①ipconfig找局域网ip地址;ping qq.com找到域名对应的ip地址。
②DNS域名解析服务器:找出ip地址和域名的映射关系。(先在本地hosts文件中查找域名对应的ip地址)

③端口:区分使用这台服务器的什么服务。
④协议:规定两台计算机之间交换数据如何明白对方的语言。HTTP:请求头、响应头、请求体、响应体。

⑤一台服务器有多个站点服务,不同站点对应不同的域名。(配置多个站点后不能使用ip地址访问页面)
虚拟站点配置是通过hosts文件的映射关系修改,前提更改好http-vhosts.conf的路径和域名。

⑥静态网站:仅仅由html页面组成,没有数据库支持,制作与维护成本大。
动态网站:网页内容根据传入的参数动态变更的网站。

⑦ajax用于注册用户名时局部刷新显示是否已经存在,不需要整个界面的跳转。

php基本语法:
①所有内容写进<?php...?>中。echo将字符串输出到浏览器中进行显示,可以解析html标签。
②可以和html结合使用,默认文件扩展名为.php。必须在服务器上执行。
③变量声明,使用需要使用$符号,无需用var或string之类,只需$str="hello"即可。字符串拼接使用.如:$str3=$str1.$str2;
④php语法只有php模块能识别,识别之后传递给Apache然后组合给网页展示。
⑤定义数组$arr=array();和js一样可以动态添加。输出数组使用print_r($arr);

var_dump($arr);echo json_encode($arr);

将数组arr转换为json格式的字符串。
⑥数组下标索引自定义:

$arr=array("name1"=>"zhangsan");echo $arr["name1"];

通过下标索引访问。
二维数组如下,缺一不可:$arr=array();$arr["zhangsan"]=array("age"=>19,"sex"=>"male");输出使用var_dump($arr);以及json_ecode($arr);json格式。
⑦数组遍历:

$arr=array("zhangsan","lisi","wangwu");for($i=0;$i<count($arr);$i++){$arr[$i];}
⑵foreach($arr as $key=>$value){
echo $key.">>>".$value."<br>";}

常用。

php常规知识:
①get请求将请求参数带在url地址栏后面,post请求加密请求。php通过form表单的action属性提交到后台进行数据处理。
②get请求的数据在地址栏url后跟随,check.php中使用$_GET["name"];获取数据。
③post请求的数据在请求体Headers,Form Data。$_POST["name"];
④前端工程师要在php中写好界面动态样式,获取数据由后端工程师负责,后端工程师需要检测输入的字段是否合法。
⑤检测合法使用两个<?php...?>,if右括号放在后面的<?php...?>中,在<?php...?>之间需要根据判断结果编写网页样式。

Ajax的使用:(JS中使用,而非php界面)
①具体步骤:
⑴创建XMLHttpRrquest对象:

var xhr=new XMLHttpRequest();

⑵准备发送网络请求:

xhr.open("get","checkUsername.php?username="+username,true);

第一个由php获取数据的方式决定,第二个参数中username由document获取,第三个参数true为异步,false为同步。
⑶开始发送网络请求:

xhr.send(null);

⑷指定回调函数:

xhr.onreadystatechange=function(){
var result=xhr.responseText;};

②先在html界面加上注册事件的元素,给js注册onblur等事件,获取的元素.value放入xhr中传递给php文件,最终php判断验证该数据是否有效,返回值用span.innerText=result;写入到html界面提前设置的地方。
③创建XMLHttpRequest对象时需要做兼容处理。

if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else{xhr=new ActiveXObject("Microsoft.XMLHttp");}

④如果open中第一个参数是get,则send中必须填null;第一个参数如果是post,那么第二个参数不需要加?及之后的一堆数据,要把数据放在send参数中

xhr.send("username="+username);

前一个"username"由php接收时使用的字符串决定。同时如果是post请求,必须在send之上open之下加入固定格式

xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

设置请求头的信息,仅仅post请求才有。
⑤设置回调函数时设置xhr.onreadystate

change=function(){if(xhr.readyState==4){
if(xhr.status==200){
xhr.onreadystatechange=function(){
var result=xhr.responseText;};     
}}}

⑥除了xml格式都是用responseText,只有xml使用responseXML
⑦地址栏使用./abc表达当前目录下的abc
⑧如果文档要求返回Json格式,则需要将responseText返回的Json字符串转换为对象,使用res=JSON.parse(res);转换,从而达到使用res.status的目的。

同步和异步:(详见JS基础)
①同步是一个时间只做一件事,如果这件事没结束则一直停在卡在这件事中。
②异步是不论这件事是否有结果,继续做接下来的事,同时进行。
③如果open参数为false同步,则卡顿后readystate在send后就已经为4,不需要再进入回调函数onreadystatechange。
④异步底层原理:单线程加事件队列。js的代码执行是单线程(从上往下按顺序依次执行),事件队列是一个容器,容器中存储一些回调函数,回调函数在js代码全部执行完之后才可能去调用(如注册事件、定时器、入口函数、onreadychange)
⑤JS单线程,但其宿主游览器不是单线程。如果是异步,在xhr第三步send时会请求游览器进行网络数据的请求,然后继续执行第四步,第四步存进任务队列。如果是同步则JS自己执行第三步send。

Ajax数据格式:
①将数据通过一定的规范组织起来,叫做数据格式。
②xml数据格式:将数据以标签的方式进行组装,必须以<?xml version="1.0" encoding="utf-8" ?>开头,标签必须成对出现。
缺点:体积太大,传输慢,元数据(描述数据的数据)太多,解析(通过数据得到想要的值)不便。
③Json数据格式:类似于JS中的对象,通过key-value的形式组装。
优点:体积小,传输快,解析方便。
④xml数据解析:因为xml获取(responseXML)的是一个document,用res.getElemntsTagName("booklist");返回一个伪数组,元素的集合HTML
Collection。[0]表示这个伪数组的第一项数据。

var books=result.getElementsByTag
Name("booklist")[0].getElementsByTag
Name("book");
var newHtml="";    for循环books.lenght。
var itemBook=books[i];
var name=itemBook.getElementsByTag
Name("name")[0].textContent;
var tempHtml="<tr><td>"+name+"</td></tr>";        newHtml+=tempHtml;
for循环外document.getElementById("").
innerHtml+=newHtml;

⑤Json数据解析:Json获取的是一个类似对象的数组字符串,因此使用Json.
parse(“res”)进行转换,res是response
Text。var newHtml="";
然后for循环,

var item=result[i];
var name=item.name;
var tempHtml="<tr><td>"+name+"</td></tr>"; 
newHtml+=tempHtml;
for循环外document.getElementById("").
innerHtml+=newHtml;

封装Ajax:
①封装步骤:首先弄清哪些东西是变的,哪些是不变的。最后明白如何将结果通知调用者,如何调用方便。
②封装的所有参数可以放在一个对象中,为了调用方便,解决参数顺序的问题。
③定义一个defaults对象处理参数默认值。然后使用循环,for (var key in obj)
defaults[key]=obj[key];让传入的obj属性覆盖defaults属性。
④Jquery中使用ajax:
$.ajax({url:url,type:type;....});
$.get(url+"?"+params,fun(){....});
$.post(url,{...},fun(){...});

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值