Ajax基础:get和post请求方式的实现

news/2024/7/19 13:40:04 标签: ajax, js, php, javascript

Ajax简介

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。

实现步骤

1.创建ajax对象

javascript">xhr = new XMLHttpRequest();//标准

2.准备发送

javascript">//open()的三个参数,(1)请求方式(get或post),(2)请求地址,(3)同步或者异步标志位,默认是true表示异步,false表示同步
xhr.open('get','url',true);

3.执行发送动作

javascript"> xhr.send(null);//get请求这里需要添加null参数,post请求为所传参数

4.指定回调函数:就是接收服务器响应的数据函数

javascript"> xhr.onreadystatechange = function(){
 //onreadystatechange:为状态改变的事件触发器,每个状态改变时都会触发这个事件处理器,通常会调用一个JavaScript函数
     if(xhr.readyState == 4){
     //readyState:为请求的状态。有5个可取值:0 = 未初始化,1 = 正在加载,2 = 已加载,3 = 交互中,4 = 完成
         if(xhr.status == 200){
         //服务器的HTTP状态码,如:404 = "文件末找到" 、200 ="成功" ,等等
             alert(xhr.responseText);
         }
     }
 }

Ajax之get和post两种请求方式的实现

因为html页面要向后端请求数据,所以需要在后端搭建环境,来响应前端的请求,我在后端使用的编程语言是php,代码如下所示。
后端服务器01ajax.php文件代码为

php"><?php
//判断请求方式
if(!empty($_POST)){
$uname=$_POST[username];//获取页面传过来的值
}
else{
	$uname=$_GET[username];
}
//打印输出
echo $uname."你好!";
?>

注意:php返回给前端网页数据只能用echo打印的方式,前端html页面才能获取,用return返回前端接收不到数据。
get请求方式的实现

javascript"><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax的get请求方式的实现</title>
    <script type="text/javascript">
    window.onload = function(){
        var btn = document.getElementById('btn');
        btn.onclick = function(){
        //获取用户名
            var username = document.getElementById('username').value;
            // 1、创建XMLHttpRequest对象
               var xhr = new XMLHttpRequest();
            // 2、准备发送
            //如果是get请求那么请求参数必须在url中传递,encodeURI()用来对中文参数进行编码,防止乱码。
            var param = 'username='+username+"&type=get";
            xhr.open('get','01ajax.php?'+encodeURI(param),true);
            // 3、执行发送动作
            xhr.send(null);//get请求这里需要添加null参数
            // 4、指定回调函数
            xhr.onreadystatechange = function(){
            //xhr.readyState == 4为请求完成
                if(xhr.readyState == 4){
                //xhr.status == 200服务器响应成功
                    if(xhr.status == 200){
                    //接收服务器响应信息
                    var data=xhr.responseText;
                    //弹出打印信息
                        alert(data);
                    }
                }
            }
            
        }
    }
    </script>
</head>
<body>
    <form>
        用户名:
        <input type="text" name="username" id="username">
        <input type="button" value="提交" id="btn">
    </form>
</body>
</html>

实现效果为:
在这里插入图片描述

post请求方式的实现

javascript"><!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Ajax的post请求方式的实现</title>
    <script type="text/javascript">
    window.onload = function(){
        var btn = document.getElementById('btn');
        btn.onclick = function(){
            var uname = document.getElementById('username').value;
            // 1、创建XMLHttpRequest对象
                var xhr = new XMLHttpRequest();//标准
            // 2、准备发送
            //post请求参数通过send传递,不需要通过encodeURI()转码,必须设置请求头信息。
            var param = 'username='+uname+"&type=post";
            xhr.open('post','01ajax.php',true);
            //设置头信息
            xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            // 3、执行发送动作
            xhr.send(param);//post请求参数在这里传递,并且不需要转码
            // 4、指定回调函数
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4){
                    if(xhr.status == 200){
                        alert(xhr.responseText);
                    }
                }
            }
            
        }
    }
    </script>
</head>

<body>
    <form>
        用户名:
        <input type="text" name="username" id="username">
        <input type="button" value="提交" id="btn">
    </form>
</body>

</html>

实现效果
在这里插入图片描述

json_156">Ajax使用json(数据交换格式)实现多数据的获取

JSON是什么
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。

任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。

JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。它的格式为:

javascript">var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串

JSON 和 JS 对象互转
要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:

javascript">var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}

要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:

javascript">var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'

JSON运用实例:查询学生信息

PHP代码

php"><?php 
    if(!empty($_POST)){
    $ID=$_POST[ID];
    }
    else{
    	$ID=$_GET[ID];
    }
    $stu = array();
    $stu['001'] = array('ID'=>'001','name'=>'吴天','class'=>'1班','score'=>'90'); 
    $stu['002'] = array('ID'=>'002','name'=>'响妮','class'=>'3班','score'=>'60'); 
    $stu['003'] = array('ID'=>'003','name'=>'艾霓','class'=>'2班','score'=>'70'); 
    $stu['004'] = array('ID'=>'004','name'=>'李勇','class'=>'4班','score'=>'50');  
    // 这里的array_key_exists用来判断数组中没有对应键
    if(array_key_exists($ID,$stu) == 1){
        $flag= $stu[$ID];//这里根据参数获取传过来对应ID的信息
        echo json_encode($flag);//将数组转成JSON格式,并输出
    }else{
        echo '{"flag":0}';
    }
 ?> 

JavaScript交互数据显示到页面代码

javascript"><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>AjaxJSON数据应用</title>
    <script type="text/javascript">
    window.onload = function(){
        var btn = document.getElementById('btn');
        btn.onclick = function(){
            var ID = document.getElementById('ID').value;
            // 1、创建XMLHttpRequest对象
            var xhr = new XMLHttpRequest();//标准
            // 2、准备发送
            //如果是get请求那么请求参数必须在url中传递
            //encodeURI()用来对中文参数进行编码,防止乱码
            var param = 'ID='+ID;
            xhr.open('get','student.php?'+encodeURI(param),true);
            // 3、执行发送动作
            xhr.send(null);//get请求这里需要添加null参数
            // 4、指定回调函数
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4){
                    if(xhr.status == 200){
                    //通过JSON.parse()方法,将传过来的json格式数据转化为JS对象,
						var data=JSON.parse(xhr.responseText);
						var info=document.getElementById("info");
						var tag='';
						if(data.flag==0){
							tag="<li>抱歉,未查到学号为:"+ID+"相关信息"+"</li>"
						}
						else{
							 tag="<li>"+data.ID+":学号的信息如下:"
							 +"</li><li>姓名:"+data.name+
							 "</li><li>班级:"+data.class+
							 "</li><li>平均成绩:"+data.score+
							 "</li>";
						}
					   info.innerHTML=tag;
                    }
                }
            }
            
        }
    }
    </script>
</head>
<body>
    <form>
        请输入查询学生的ID<input type="text" name="ID" id="ID">
        <input type="button" value="提交" id="btn">
		<ul id="info">
			
		</ul>
    </form>
</body>
</html>

实现效果
输入正确的学号
在这里插入图片描述
输入不存在的学号:
在这里插入图片描述


http://www.niftyadmin.cn/n/855661.html

相关文章

$.ajax()实现ajax语法格式及完整案例

$.ajax()代码模板 jQuery实现ajax语法为&#xff1a;$.ajax({})&#xff0c;其中{}为对象&#xff0c;对象里面的key键是固定的&#xff0c;比如: 1、type: 表示请求方式&#xff0c;一般为post或get 2、url表示请求的地址 3、contentType表示发送信息至服务器时内容编码类型…

ajax跨域的几种实现方式

什么是跨域 同协议&#xff0c;同ip&#xff0c;同端口视为一个域&#xff0c;当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。 原生态ajax跨域实现 通过动态创建script标签通过src发送跨域地址&#xff0c;通过定义function XXX&#xff08;&…

less环境搭建及VScode使用less(详细教程)

less安装步骤 1、下载安装node.js 2、下载安装less 3、打开VScode软件安装插件 Easy LESS 4、编辑保存.less文件&#xff0c;会在对应的目录下生成对应的.css文件 下载安装node.js node.下载地址&#xff1a;https://nodejs.org/en/ 首先打开node.js网址&#xff0c;点击下载…

前端超级实用的几个主流框架

一、Bootstrap框架 Bootstrap官网及下载网站: https://www.bootcss.com/ Bootstrap实用功能: 大部分网页样式&#xff08;导航栏&#xff0c;图片&#xff0c;按钮&#xff0c;表单&#xff09;&#xff0c;栅格系统&#xff0c;轮播图&#xff0c;下拉菜单 等等 Bootstrap简…

vue学习记录:mvc与MVVM区别、vue的安装、v-cloak、v-text、v-html用法、v-bind及v-on用法

什么是Vue.js Vue是一套用于构建用户界面的渐进式JavaScript框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;方便与第三方库或既有项目整合。 后端的 MVC 与 前端中的 MVVM 之间的区别 MVC : 是后端的分层…

基于Vue实现标签的字体滚动

实现思路&#xff1a; 通过截取数据第一个字符&#xff0c;把它拼接到最后&#xff0c;通过定时器实现滚动效果&#xff0c;在vue中&#xff0c;当你更新data数据时&#xff0c;网页会自己帮你更新网页中的数据。 实现代码 <!DOCTYPE html> <html><head>&…

vue学习记录:事件修饰符、v-model、Class 与 Style 绑定

一、vue.js事件修饰符 .stop 阻止冒泡.prevent 阻止默认行为.self 实现只有点击当前元素时候&#xff0c;才会触发事件处理函数.capture 实现捕获触发事件的机制.once 只触发一次事件处理函数 <div id"app"><!-- 使用 .stop 阻止冒泡 --><div clas…

vue学习记录:v-for使用及v-if和v-show用法及区别

v-for:遍历数组、数组对象、对象、迭代数字 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv&…