Ajax

[TOC]

PHP基础语法

  • 定义变量:$num = 10;

  • 定义数组:$arr = array(1,3,5);

  • 打印内容:echo $num;

    echo不能输出集合,比如打印数组什么的

  • print_r($arr); // Array([0] => 1 [1] => 3 [2] => 5)

    echo arr[0]; // 1

  • 定义字典(对象):$dict = array("name"=>"lnj", "age"=>"33")

    echo $dict["name"];

  • 分支循环:if/switch/三目/for/while 和JS的一样

    1
    2
    3
    4
    5
    6
    7
    <?php
    $arr = array(1,3,5);
    for($i = 0;$i < count($arr),$i++){ //count($arr)获取数组长度
    echo $arr[$i];
    echo "<br>";
    }
    ?>

    后端编写的代码不能直接运行,只能放到服务器对应的文件夹下,通过服务器运行

get请求

1
2
3
4
5
<form action="http://www.baidu.com" method="get">
<input type="text" name="userName"><br>
<input type="password" name="userPwd"><br>
<input type="submit" value="提交"><br>
</form>
1
2
3
4
5
<?php
print_r($_GET); // Array([userName] => xx [userPwd] => 123456)
echo $_GET["userName"];
echo $_GET["userPwd"];
?>

Post请求

1
2
3
4
5
6
7
8
9
10
11
<form action="http://www.baidu.com" method="post">
<input type="text" name="userName"><br>
<input type="password" name="userPwd"><br>
<input type="submit" value="提交"><br>
</form>

<?php
print_r($_POST);
echo $_POST["userName"];
echo $_POST["userPwd"];
?>

GET请求和POST请求的异同:

  • 相同点:

    ​ 都是将数据提交到远程服务器

  • 不同点:

  1. GET请求会将数据提交到url后面

    POST请求会将数据提交到Nework里面的请求头里面

  2. GET请求对数据大小有限制

    POST请求对数据大小没有限制

  3. GET请求用于提交非敏感数据和小数据

    POST请求用于提交敏感数据和大数据

上传文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form action="03-post-file.php" method="post" enctype="multipart/form-data">
<input type="file" name="upFile"><br>
<input type="submit" value="上传"><br>
</form>

<?php
print_r($_FILES);
//1.获取文件上传对应的字典(对象)
$fileInfo = $_FILES["upFile"];
//2.获取上传文件的名称
$fileName = $fileInfo["name"];
//3.获取上传文件保存的临时路径
$filePath = $fileInfo["tmp_name"];
//4.移动文件move_uploaded_file(旧路径,新路径加上传的文件名称); php中的字符串拼接用.
move_uploaded_file($filePath,destination:"./source/".$fileName);

?>

注意:上传文件一般用POST提交

必须指定该属性enctype="multipart/form-data"

上传的文件在php中可以通过$_FILES获取,文件默认会上传到一个临时目录,接收完毕之后会自动删除

GET基本使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
oBtn.onclick = function(ev){
//1.创建一个异步对象
var xmlhttp=new XMLHttpRequest();
//2.设置请求方式和请求地址
/*
method:请求的类型:GET 或者 POST
url: 文件在服务器上的位置
async: true(异步) 或 false(同步)
*/
xmlhttp.open("GET","04-ajax-get.php?t="+(new Date().getTime()),true);
//3.发送请求
xmlhttp.send();
//4.监听状态的变化
/*
0:请求未初始化
1:服务器连接已建立
2:请求已接收
3:请求处理中
4:请求已完成,且响应已就绪
*/
xmlhttp.onreadystatechange = function(ev1){
//判断是否请求成功
if(xmlhttp.readyState === 4){
//5.处理返回的结果
//判断http状态码,可以判断输入的地址是否正确
if(xmlhttp.status >= 200 && xmlhttp.status <300 ||xmlhttp.atatus === 304){
console.log(xhr.responseText);
//responseText获得字符串形式的服务器返回的响应式数据
//responseXML获得XML形式的响应数据
}
}
}


}

POST基本使用

xmlhttp.open("POST","04-ajax-get.php?t="+(new Date().getTime()),true);

传递参数的POST:

注意点:必须在open和send方法之间加入xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

1
2
3
xmlhttp.open("POST","04-ajax-get.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xml.send("userName=zs&userPwd=111");

jQurey+Ajax

1
2
3
4
5
6
7
8
9
10
11
12
13
14
oBtn.onclick = function(ev1){
$.ajax({
type:"GET",
url:"some.php",
data:"name=John&location=Boston",
success: function(msg){
slert(msg);
}
error:function(xhr){
//错误则显示状态码
alert(xhr.status);
}
})
}

XML

  • 书写XML代码

    必须有根标签

    标签名可以自定义

    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8" ?>
    <person>
    <name>xxxx</name>
    <age>11</age>
    </person>
  • 在PHP中获取XML文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    //执行结果中有中文,必须在php文件顶部设置
    //header("content-type:text/html;charset=utf-8");

    //如果PHP中需要返回XML数据,也必须在PHP文件顶部设置
    //header(string:"content-type:text/xml;charset=utf-8");


    header(string:"content-type:text/xml;charset=utf-8");
    file-get-contents(filename:"info.xml")

  • 在前端中获得后台返回的XML

    1
    2
    3
    var res = xhr.responseXML;
    //获得XML标签中的值
    var name = res.querySelector("name").innerHTML;

JSON

1
2
3
//php
<?php
echo file_get_contents(filename:"name.txt")