一. Ajax
1. $.ajax()
$.ajax( { "选项名" : "选项值" , "选项名" : "选项值" … } );
$.ajax({
"type":"post",
"url":"res/jquery/php/user.php",
"data":{"userName":"林俊杰"},
"dataType":"json",
"error":function(){
alert("服务器请求出错!");
},
"success":function(data){
var str = "";
str += "<br/>姓名:"+data.userName+"<br/>";
str += "<br/>性别:"+data.sex+"<br/>";
str += "<br/>年龄:"+data.age+"<br/>";
str += "<br/>地址:"+data.address+"<br/>";
$("#showMsg").html(str);
}
});
通过 ajax() 方法,执行 AJAX 请求。
“type”:”post”:设置 AJAX 请求类型为 POST。
“url”:”res/jquery/php/user.php”:设置 AJAX 请求的 URL 地址。
“data”:{“userName”:”林俊杰”}:设置 AJAX 将要发送到服务器的数据。
“dataType”:”json”:设置服务器响应的数据类型为 JSON 类型。
“error”:function(){…}:设置 AJAX 请求失败时,将要执行的函数。
“success”:function(data){…}:设置 AJAX 请求成功时,将要执行的函数。data 为服务器响应数据。
2. $.get()
$.get( 请求地址 , 发送的数据 , 回调函数 , 响应数据类型 );
$.get("res/jquery/php/city.php",{"cityCode":"010"},function(data){
$("#div1").html(data);
});
$.get(…):通过 HTTP 的 GET 请求方式,从服务器请求数据。
url:设置 AJAX 请求的 URL 地址。
param:设置 AJAX 将要发送到服务器的数据(JSON 数据格式)。
function(data){…}:设置 AJAX 请求成功时,将要执行的回调函数。data 为服务器响应数据。
3. $.post()
$.post( 请求地址 , 发送的数据 , 回调函数 , 响应数据类型 );
$.post("res/jquery/php/city.php",{"cityCode":"010"},function(data){
$("#div1").html(data);
});
$.post(…):通过 HTTP 的 POST 请求方式,从服务器请求数据。
url:设置 AJAX 请求的 URL 地址。
param:设置 AJAX 将要发送到服务器的数据(JSON 数据格式)。
function(data){…}:设置 AJAX 请求成功时,将要执行的回调函数。data 为服务器响应数据。
二. JSON 操作
1. json 定义
- JSON: JavaScript Object Notation(JavaScript 对象表示法)
- JSON 是存储和交换文本信息的语法,类似 XML。
- JSON 比 XML 更小、更快,更易解析。
2. Json 特点:
- JSON 是纯文本
- JSON 具有”自我描述性”(人类可读)
- JSON 具有层级结构(值中存在值)
- JSON 可通过 JavaScript 进行解析
- JSON 数据可使用 AJAX 进行传输
3. JSON 语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
- 数据使用
key:value
形式表示 - 数据键值对之间由逗号分隔
- 大括号 {} 保存对象
- 中括号 [] 保存数组,数组可以包含多个对象
- json数据中所有的字符串都必须使用
双引号
包裹.
4. JSON数据示例
// 简单对像形式数据
{"name":"Tom","sex":"male","age":42,"address":"BeiJing","star":"4"}
// 简单的数组形式数据
[
{"name":"Tom","sex":"male","age":42,"address":"BeiJing","star":"4"},
{"name":"Jack","sex":"male","age":42,"address":"BeiJing","star":"4"},
{"name":"Rose","sex":"female","age":42,"address":"BeiJing","star":"4"}
]
三. 面向对象初识
1. 名词概览
- 类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
- 对象 − 是类的实例。
- 成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可成为对象的属性。
- 成员函数 − 定义在类的内部,可用于访问对象的数据。
- 继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
- 父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。
- 子类 − 一个类继承其他类称为子类,也可称为派生类。
- 多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
- 重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
- 抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
- 封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
- 构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
- 析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做”清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
2. 定义类
<?php
header("content-type:text/html;charset=utf-8");
// 定义一个玩家类
class Player{
// 成员属性
var $id;
var $name;
var $passwd;
var $gold;
// 构造函数
function __construct($id,$name,$passwd,$gold){
// $this 表示当前对象本身
$this->id = $id;
$this->name = $name;
$this->passwd = $passwd;
$this->gold = $gold;
}
// 成员方法
function setPasswd($pd){
$this->passwd = $pd;
}
function setGold($gold){
$this->glod = $glod;
}
function getID(){
return $this->id;
}
function getName(){
return $this->name;
}
function getPasswd(){
return $this->passwd;
}
function getGold(){
return $this->gold;
}
function showAllInfo(){
$info = "ID:{$this->id} Name:{$this->name} Passwd:{$this->passwd} GOLD:{$this->gold}" ;
return $info;
}
}
?>
注意:
- 在定义类时,类的成员变量前,需要有一个
var
关键字. - 在通过
`符号
3. 实例对象
$p1 = new Player(1,"tom","123",200);
var_dump($p1);
echo "<br>";
echo "ID:" . $p1->id;
echo "<br>";
echo "Name:" . $p1->name;
echo "<br>";
echo "Passwd:" . $p1->passwd;
echo "<br>";
echo "Gold:" . $p1->gold;
echo "<br>";
echo $p1->getID();
echo "<br>";
echo $p1->getName();
echo "<br>";
echo $p1->getPasswd();
echo "<br>";
echo $p1->getGold();
echo "<br>";
echo $p1->showAllInfo();
echo "<br>";
四. PHP中处理JSON数据
1. 将数据转换为 json
string json_encode( $value )
<?php
header("content-type:text/html;charset=utf-8");
// 定义类
class SClass{
var $className;
var $teacherName;
var $studentNum;
var $studs;
}
// 实例对象
$hbjd = new SClass();
// 保存数据
$hbjd->className = "HBJD";
$hbjd->teacherName = "GXJ";
$hbjd->studentNum = 3;
$stuInfo = array("userName"=>"靳东","sex"=>"男","age"=>42,"address"=>"山东省","star"=>"摩羯座");
$hbjd->studs = [$stuInfo, $stuInfo, $stuInfo];
// 进行json编码,将数据转换成json字符串
$json = json_encode($hbjd);
echo $json;
- 结果
{"className":"HBJD","teacherName":"GXJ","studentNum":3,"studs":[{"userName":"\u9773\u4e1c","sex":"\u7537","age":42,"address":"\u5c71\u4e1c\u7701","star":"\u6469\u7faf\u5ea7"},{"userName":"\u9773\u4e1c","sex":"\u7537","age":42,"address":"\u5c71\u4e1c\u7701","star":"\u6469\u7faf\u5ea7"},{"userName":"\u9773\u4e1c","sex":"\u7537","age":42,"address":"\u5c71\u4e1c\u7701","star":"\u6469\u7faf\u5ea7"}]}
2. 将 json 转换为数据
<?php
header("content-type:text/html;charset=utf-8");
// json 数据
$json = '{"className":"HBJD","teacherName":"GXJ","studentNum":3,"studs":[{"userName":"\u9773\u4e1c","sex":"\u7537","age":42,"address":"\u5c71\u4e1c\u7701","star":"\u6469\u7faf\u5ea7"},{"userName":"\u9773\u4e1c","sex":"\u7537","age":42,"address":"\u5c71\u4e1c\u7701","star":"\u6469\u7faf\u5ea7"},{"userName":"\u9773\u4e1c","sex":"\u7537","age":42,"address":"\u5c71\u4e1c\u7701","star":"\u6469\u7faf\u5ea7"}]}';
echo $json;
echo "<hr>";
// 将json数据转换为对象
$jsonToObj = json_decode($json);
// 将 json 数据转换为数组
$jsonToArr = json_decode($json,true);
var_dump($jsonToObj);
echo "<hr>";
var_dump($jsonToArr);
五. 接口实现
通过PHP实现接口,为前端显示页面提供逻辑处理后的数据
实现显示和逻辑处理的分离思想.
实现方式:
在PHP代码中,通过 echo
方式,将页面需要的数据进行返回 .
大部分情况下,接口返回的数据都是以json形式返回.
六. Restful
1. 什么是restful
英文representational state transfer直译为表现层状态转移,或者表述性状态转移;
Rest是web服务的一种架构风格,一种设计风格,是一种思想;
同时Rest不是针对某一种编程语言的。
以webService为例通俗解释。
- 非Rest设计,以往我们都会这么写:
http://localhost:8080/admin/getUser (查询用户)
http://localhost:8080/admin/addUser (新增用户)
http://localhost:8080/admin/updateUser (更新用户)
http://localhost:8080/admin/deleteUser (删除用户)
总结:以不同的URL(主要为使用动词)进行不同的操作。 - Rest架构:
GET http://localhost:8080/admin/user (查询用户)
POST http://localhost:8080/admin/user (新增用户)
PUT http://localhost:8080/admin/user (更新用户)
DELETE http://localhost:8080/admin/user (删除用户)
总结:URL只指定资源,以HTTP方法动词进行不同的操作。用HTTP STATUS/CODE定义操作结果。
Restful:遵守了rest风格的web服务便可称为Restful。
2. restful 请求方式
【GET】 /users # 查询用户信息列表
【GET】 /users/1001 # 查看某个用户信息
【POST】 /users # 新建用户信息
【PUT】 /users/1001 # 更新用户信息(全部字段)
【PATCH】 /users/1001 # 更新用户信息(部分字段)
【DELETE】 /users/1001 # 删除用户信息
【PATCH】一般不用,用【PUT】