一、前期准备

安装好XAMPP软件,并运行起来。本文代码是基于XAMPP开发环境,XAMPP是完全免费且易于安装的Apache发行版,其中包含MariaDB、PHP和Perl。XAMPP开放源码包的设置让安装和使用出奇容易。

二、前后台数据交互

前台部分
其中“process.php?name=Herry”,向后台传递name数据


document.getElementById("button").addEventListener("click",function () {
var xhr = new XMLHttpRequest();
xhr.open("GET","process.php?name=Herry",true);
xhr.onreadystatechange=function () {
if(xhr.readyState==4&&xhr.status==200) {
var data = xhr.responseText;
console.log(data)
}
};
xhr.send();
})

后台PHP部分
后台接收了name数值,并向前台返回了"GET: 你的名字是". $_GET['name']


<?php
if (isset($_GET['name'])) {
echo "GET: 你的名字是". $_GET['name'];
}
?>

于是最后前台console里面得到:GET: 你的名字是Herry

三、正常表单提交到PHP与Ajax方式提交

正常表单GET提交数据到PHP

前台部分


<form action="process.php" method="GET">
<input type="text" name="name">
<input type="submit" value="提交">
</form>

后台PHP部分


<?php
if (isset($_GET['name'])) {
echo "GET: 你的名字是". $_GET['name'];
}
?>

表单输入名字Bucky,然后点击提交后,浏览器将数据打包后,传递给后台,最后后台返回我们想要的数据----GET: 你的名字是Bucky。整个过程中页面有刷新,数据点击提交后,页面跳转到这个网址http://localhost/ajax/process...

Ajax请求后台数据GET

Ajax异步请求数据,无需刷新页面。可以提高用户体验,较少网络数据的传输量。click事件改成submit事件(表单应该用submit事件),然后取消默认事件。

前台部分


//Html部分
<form id="getForm">
<input type="text"name="name" id="name1">
<input type="submit"value="提交">
</form>
//Javascript部分
document.getElementById("getForm").addEventListener("submit",function(e){
e.preventDefault();//阻止默认跳转事件
var name=document.getElementById("name1").value;//获取输入的值
var xhr = new XMLHttpRequest();
xhr.open("GET","process.php?name="+name,true);
xhr.onreadystatechange=function () {
if ( xhr.status == 200&&xhr.readyState == 4) {
var data = xhr.responseText;
console.log(data);
}
}
xhr.send();
})

后台PHP部分


<?php
if (isset($_GET['name'])) {
echo "GET: 你的名字是". $_GET['name'];
}
?>

在表单输入Bucky,点击提交,最后在console显示:GET: 你的名字是Bucky。整个过程页面无刷新,有效提高页面性能。

正常表单POST提交数据到PHP

与GET提交数据差不多
前台部分


<form action="process.php" method="POST">
<input type="text" name="name">
<input type="submit" value="提交">
</form>

后台PHP部分


<?php
if (isset($_POST['name'])) {
echo "POST: 你的名字是". $_POST['name'];
}
?>

表单输入名字Bucky,然后点击提交后,浏览器将数据打包后,传递给后台,最后后台返回我们想要的数据----POST: 你的名字是Bucky。整个过程中页面有刷新,数据点击提交后,页面跳转到这个网址http://localhost/ajax/process...。与GET方式提交不同的是,POST方法数据并没有内嵌在url中,这样安全性比较高。

Ajax请求后台数据POST

POST请求与GET主要有两点不同:

①post请求一定要设置请求头的格式内容:


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

②post请求参数放在send里面,即请求体


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

前台部分


//HTML部分
<form id="postForm">
<input type="text"name="name" id="name2">
<input type="submit"value="提交">
</form>
//Javascript部分
document.getElementById("postForm").addEventListener("submit", function (e) {
e.preventDefault();
var name=document.getElementById("name2").value;
var params = "name="+name;
var xhr = new XMLHttpRequest();
xhr.open("POST","process.php",true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.onreadystatechange=function () {
if(xhr.readyState==4&&xhr.status==200) {
var data = xhr.responseText;
console.log(data);
}
};
xhr.send(params);
})

后台PHP部分


<?php
if (isset($_POST['name'])) {
echo "POST: 你的名字是". $_POST['name'];
}
?>

表单输入名字Bucky,然后点击提交后,最后在console显示:POST: 你的名字是Bucky。整个过程页面无刷新。

四、总结

1.在不需要重新刷新页面的情况下,Ajax 通过异步请求加载后台数据,提高用户体验和页面性能。
2.GET参数通过URL传递,POST放在Request body中,后者安全性比较高。

来源:https://segmentfault.com/a/1190000017411394

Ajax请求后台数据的更多相关文章

  1. 前台返回json数据的常用方式+常用的AJAX请求后台数据方式

    我个人开发常用的如下所示: 之所以像下面这样下,一是前台Ajax,二是为安卓提供接口数据 现在常用的是返回JSON数据,XML的时代一去不复返 JSON相对于XML要轻量级的多 对JSON不是十分熟悉 ...

  2. JS 操作 HTML 和 AJAX 请求后台数据

    为某个元素插入值,添加属性,添加子元素 <div class="col-sm-6"> <select class="form-control" ...

  3. jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法

    jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Objec ...

  4. ajax 请求后台数据返回异常 及 提示404方法名不存在

    1.正常使用 Ajax 调取后台数据时,提示方法名不存在,Ajax前端正常,方法类bean注入正常,方法注解正常.但参数解析时出现异常. @RequestMapping(value="/ge ...

  5. 【Java框架型项目从入门到装逼】第六节 - 用ajax请求后台数据

    这一节我们来说一下如何用ajax提交请求? 我们先不讲ajax的原理,还是先以实战为主,看一下这个东西到底怎么用的? form表单: <!-- 采用post表单提交 --> <for ...

  6. jQuery Ajax请求后台数据并在前台接收

    1.ajax基本语法 <script> $(function(){ $('#sub').click(function(){ var username=$('#username').val( ...

  7. 用Ajax请求后台数据

    我们先不讲ajax的原理,还是先以实战为主,看一下这个东西到底怎么用的? form表单: <%@ page language="java" contentType=" ...

  8. js页面用定时任务通过AJAX获取后台数据,但是从这个页面跳转到其他页面后,定时任务仍然在定时请求后台

    setInterval(function(){//ajax 请求后台数据},1000);这个是A页面的定时器然后我在A页面通过其他请求跳转到其他页面之后后台发现A页面的定时器的那个请求仍然在执行为什么 ...

  9. C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求

    C# 动态创建SQL数据库(二) 使用Entity Framework  创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...

随机推荐

  1. Trie树简介

    Trie树, 即字典树, 又称单词查找树或键树, 多叉树 基本性质 根节点不包含字符,除根节点外每一个节点都只包含一个字符 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串 每个节点 ...

  2. CodeForces 1100F Ivan and Burgers

    CodeForces题面 Time limit 3000 ms Memory limit 262144 kB Source Codeforces Round #532 (Div. 2) Tags da ...

  3. windows10 gcc编译C程序(分步编译)

    下面演示gcc对C源程序的分步编译过程: 1. 编译(Compile) gcc hello.cpp -c # 生成hello.o,目标文件名字和源文件名字一样,VC编译会生成.ojb文件,gcc编译器 ...

  4. 【BZOJ2118】墨墨的等式(同余最短路)

    题意: 思路:From https://www.cnblogs.com/GavinZheng/p/11709153.html#4421510 写的1e9,int范围的 #include<bits ...

  5. D5000系统使用手册--AVC

    有关概念: AVC:自动电压控制 PAS:网络分析应用 SCADA:电网稳态监控应用 闭环:AVC由SCADA系统获得电网的实时运行状态,分析计算后发出控制指令,电网运行状态变化后反馈回AVC,形成闭 ...

  6. AtCoder AGC002F Leftmost Ball (DP、组合计数)

    题目链接: https://atcoder.jp/contests/agc002/tasks/agc002_f 题解: 讲一下官方题解的做法: 就是求那个图(官方题解里的)的拓扑序个数,设\(dp[i ...

  7. box-shadow inset

    安卓支持,ios不支持:box-shadow: 0px 0px 2px inset rgba(0,0,0,0.08); 安卓,ios都支持:box-shadow: inset 0px 0px 2px ...

  8. [BZOJ2839]:集合计数(组合数学+容斥)

    题目传送门 题目描述 .(是质数喔~) 输入格式 一行两个整数N,K. 输出格式 一行为答案. 样例 样例输入: 3 2 样例输出: 样例说明 假设原集合为{A,B,C} 则满足条件的方案为:{AB, ...

  9. JavaScript-Load-Image

    如何将图片显示为canvas https://github.com/blueimp/JavaScript-Load-Image/blob/master/js/load-image-scale.js h ...

  10. 555E Case of Computer Network

    分析 一个连通块内的肯定不影响 于是我们先缩点 之后对于每个路径 向上向下分别开一个差分数组 如果两个数组同时有值则不合法 代码 #include<bits/stdc++.h> using ...