AJAX get 和post 请求

get请求

GET请求,就是“URL”即数据,GET请求的报文是空的,所以我们的send为null。如果我们的GET请求的open需要参数一定要通过拼接字符串来实现

xhr.open("get","info.php?id="+txt.value, true);

小案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" id="txt">
    <button id="btn">提交</button>
    <div id="box"></div>
    <script>
        var txt = document.getElementById("txt");
        var btn = document.getElementById("btn");
        var box = document.getElementById("box");

        btn.onclick = function () {
            //创建请求对象
            var xhr = new XMLHttpRequest();
            //配置请求对象
            xhr.onreadystatechange = function () {
                if(xhr.readyState == 4){
                    box.innerHTML = xhr.responseText
                }
            }
            //使用get 请求,请求路径info.php,是否异步
            xhr.open("get","info.php?id="+txt.value,true);
            //发送请求
            xhr.send(null)
        }
    </script>
</body>
</html>

info.php

<meta charset='utf-8'>
<?php
    $arr = array(
        "10001" => array("name"=>"小明","age"=>18,"sex"=>"男","height"=>"165","weight"=>62),
        "10002" => array("name"=>"小白","age"=>19,"sex"=>"女","height"=>"175","weight"=>70),
        "10003" => array("name"=>"小虎","age"=>20,"sex"=>"男","height"=>"180","weight"=>75),
        "10004" => array("name"=>"小黑","age"=>21,"sex"=>"女","height"=>"160","weight"=>55),
        "10005" => array("name"=>"小刘","age"=>22,"sex"=>"男","height"=>"168","weight"=>65),
    );
    //获取用户输入的学号ID
    $id = $_GET["id"];
?>
<h1>
    <?php echo $id ?>
</h1>
<ul>
    <li><?php echo $id ?></li>
    <li><?php echo $arr[$id]['name'] ?></li>
    <li><?php echo $arr[$id]['age'] ?></li>
    <li><?php echo $arr[$id]['sex'] ?></li>
    <li><?php echo $arr[$id]['height'] ?></li>
    <li><?php echo $arr[$id]['weight'] ?></li>
</ul>

 post 请求

POST请求,URL中不在写参数,一切交给报文去传输数据。所以POST请求的open,不需要拼接字符串,send会有数据传输

post请求的数据提交的时候是用  &  符合拼接起来的,但是POST请求参数是在formData中,内部是数据是一个k:v状态,如何转换

timu1=很好&timu2=正常&timu3=阿斯蒂芬

设置报文头信息,进行转换

xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

写个问卷调查小案例

.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>学生问卷调查</h1>
    <form>
        <p>题目1:目前的学习情况</p>
        <label>
            <input type="radio" name="timu1" value="很好">很好
        </label>
        <label>
            <input type="radio" name="timu1" value="较好">较好
        </label>
        <label>
            <input type="radio" name="timu1" value="一般">一般
        </label>
        <label>
            <input type="radio" name="timu1" value="较差">较差
        </label>
        <label>
            <input type="radio" name="timu1" value="很差">很差
        </label>
        <p>题目2:目前的学习进度</p>
        <label>
            <input type="radio" name="timu2" value="很快">很快
        </label>
        <label>
            <input type="radio" name="timu2" value="较快">较快
        </label>
        <label>
            <input type="radio" name="timu2" value="一般">一般
        </label>
        <label>
            <input type="radio" name="timu2" value="较快">较快
        </label>
        <label>
            <input type="radio" name="timu2" value="很快">很快
        </label>
        <p>题目3:有什么建议</p>
        <p>
            <textarea name="timu3" cols="30" rows="10" id="area"></textarea>
        </p>
        <p>
            <input type="button" id="btn" value="提交参数">
        </p>
    </form>
    <script>
        var btn = document.getElementById("btn");
        var timu1s = document.getElementsByName("timu1");
        var timu2s = document.getElementsByName("timu2");
        var timu3s = document.getElementById("area");
        btn.onclick = function () {
            for (var i = 0; i < timu1s.length; i++) {
                if (timu1s[i].checked) {
                    var timu1 = timu1s[i].value
                }
            }
            for (var i = 0; i < timu2s.length; i++) {
                if (timu2s[i].checked) {
                    var timu2 = timu2s[i].value
                }
            }
            var timu3 = timu3s.value;
            var subStr = "timu1=" + timu1 + "&timu2=" + timu2 + "&timu3=" + timu3
            //console.log(subStr)

            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4) {
                    if (xhr.responseText == "SUCCESS") {
                        alert("提交成功")
                    } else if (xhr.responseText == "ERROR") {
                        alert("提交失败")
                    }

                }
            }
            xhr.open("post", 'postform.php', true);
            //报文头设置
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xhr.send(subStr)
        }
    </script>
</body>
</html>

postform.php

<?php 
    //获取报文头
    $timu1 = $_POST["timu1"];
    $timu2 = $_POST["timu2"];
    $timu3 = $_POST["timu3"];
    // 链接数据库:需要链接的服务器,用户名和密码
    $connect = mysql_connect("localhost", "root", 123456);
    // 选择哪个数据库
    mysql_selectdb("xiaobai");
    // 设置字符集
    mysql_query("SET NAMES UTF8");
    // 向对应的数据库插入数据
    $sql = "INSERT INTO student (timu1,timu2,timu3) VALUES('{$timu1}','{$timu2}','{$timu3}')";
    //查询数据库中的数据
    //$sql = "SELECT * FROM form";
    //执行命令
    mysql_query($sql);
    $result = mysql_query($sql);
    if($result == 1){
        echo "SUCCESS";
    }else {
        echo "ERROR";
    }
    mysql_close($connect)
?>

猜你喜欢

转载自blog.csdn.net/weixin_41040445/article/details/114856392