Ajax的简单实现
Ajax的实现需要服务器端和客户端配合来实现
下面看服务器端的代码,也就是用php编写的一个后台脚本文件
<?php
//设置页面内容,编码格式是utf8
header("Content-Type:text/plain;charset=utf-8");
//定义一个多维数组,每条员工信息为一个数组
$staff = array(
array('name' =>'杰伦' ,'number'=>'01' ,'sex'=>'男' ,'job'=>'总经理' ),
array('name' =>'弈迅' ,'number'=>'02' ,'sex'=>'男' ,'job'=>'开发经理' ),
array('name' =>'力宏' ,'number'=>'03' ,'sex'=>'男' ,'job'=>'产品经理' )
);
//判断请求方式,如果是get请求则进入search方法,post请求进入create方法
//$_SERVER是超全局变量,在一个脚本文件的全部作用域都能使用
//$_SERVER["REQUEST_METHOD"]返回页面使用的请求方法
if($_SERVER["REQUEST_METHOD"] == "GET") {
search();//搜索员工
}elseif ($_SERVER["REQUEST_METHOD"] == "POST") {
# code...
create();//新建员工
}
//通过员工编号搜索员工
function search(){
//检查是否有员工编号的参数
//issent检测变量是否设置,empty判断值是否为空
//超全局变量$_GET和$_POST用来收集表单数据
if(!isset($_GET["number"])||empty($_GET["number"])){
echo "参数错误";
return;
}
//函数之外声明的变量拥有Global作用域,只能在函数以外进行访问
//需要用global关键词,才能访问函数内的全局变量
global $staff;
//获取number参数
$number = $_GET["number"];
$result = "没有员工。";
//遍历staff数组,查找key值为number的员工是否存在
foreach ($staff as $value) {
# code...
if($value["number"] == $number){
$result="找到员工:员工编号:".$value["number"].
",员工姓名:".$value["name"].
",员工性别:".$value["sex"].
",员工职位:".$value["job"];
break;
}
}
echo $result;
} //创建员工
function create(){
//判断信息是否写全
if(!isset($_POST["name"]) || empty($_POST["name"])
|| !isset($_POST["number"]) || empty($_POST["number"])
|| !isset($_POST["sex"]) || empty($_POST["sex"])
|| !isset($_POST["job"]) || empty($_POST["job"])){
echo "参数错误,员工信息填写不全";
return;
} echo "员工:".$_POST["name"]."信息保存成功!";
} ?>
客户端的代码如下
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head> <body>
<h1>员工查询</h1>
<label>请输入员工编号:</label>
<input type="text" id="keyword">
<button id="search">查询</button>
<p id="searchResult"></p> <h1>员工新建</h1>
<label>请输入员工姓名:</label>
<input type="text" id="staffName"><br>
<label>请输入员工编号:</label>
<input type="text" id="staffNumber"><br>
<label for="">请输入员工性别:</label>
<select id="staffSex">
<option>男</option>
<option>女</option>
</select><br>
<label>请输入员工职位:</label>
<input type="text" id="staffJob"><br>
<button id="save">保存</button>
<p id="createResult"></p> <script type="text/javascript">
document.getElementById("search").onclick=function(){
//发送Ajax查询请求并处理
//新建一个XHR对象
var request = new XMLHttpRequest();
//调用open方法(get方法,地址)地址上需要带一些参数
request.open("GET","newPHP.php?number=" + document.getElementById("keyword").value);
//使用send()方法发送请求
request.send();
//通过onreadystatechange事件来监听请求
request.onreadystatechange=function(){
//readyState=4则表示请求结束
if(request.readyState === 4){
//status=200表示请求成功
if(request.status === 200){
//通过responseText来获取报文并赋给DOM,用来显示查询结果
document.getElementById("searchResult").innerHTML = request.responseText;
}else{
alert("发生错误" + request.status);
}
}
}
} document.getElementById("save").onclick=function(){
var request = new XMLHttpRequest();
//调用open方法(post方法,地址)把参数直接传到send方法
request.open("POST","newPHP.php");
//构造参数data
var data = "name=" + document.getElementById("staffName").value
+ "&number=" + document.getElementById("staffNumber").value
+ "&sex=" + document.getElementById("staffSex").value
+ "&job=" + document.getElementById("staffJob").value;
//设置content-type
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.send(data);
request.onreadystatechange=function(){
if(request.readyState === 4){
if(request.status === 200){
document.getElementById("createResult").innerHTML = request.responseText;
}else{
alert("发生错误" + request.status);
}
}
}
}
</script>
</body> </html>
具体的一些属性比如responseText,一些方法response.open
想要具体了解这些,可以看我之前的一篇:
Ajax_HTTP请求以及响应
Ajax的简单实现的更多相关文章
- html --- ajax --- javascript --- 简单的封装
Ajax的简单封装 Ajax的全称是AsynchronousJavaScriptAndXML 如有疑问请参考:http://zh.wikipedia.org/zh-cn/AJAX 以及传智播客的视频教 ...
- MVC3.0+knockout.js+Ajax 实现简单的增删改查
MVC3.0+knockout.js+Ajax 实现简单的增删改查 自从到北京入职以来就再也没有接触MVC,很多都已经淡忘了,最近一直在看knockout.js 和webAPI,本来打算采用MVC+k ...
- php+jquery+ajax+json简单小例子
直接贴代码: <html> <title>php+jquery+ajax+json简单小例子</title> <?php header("Conte ...
- 第107天:Ajax 实现简单的登录效果
使用 Ajax 实现简单的登录效果 Ajax是一项使局部网页请求服务器信息,而不需整体刷新网页内容的异步更新技术.这使得向服务器请求的数据量大大减少,而且不会因局部的请求失败而影响到整体网页的加载. ...
- Django ajax的简单使用、自定义分页器
一. ajax初识 1. 前后端传输数据编码格式contentType 使用form表单向后端提交数据时,必须将form表单的method由默认的get改为post,如果提交的数据中包含文件,还要将f ...
- AJAX实现简单的注册页面异步请求
p { margin: 0px; padding: 0px } AJAX简介 (1)AJAX = 异步 JavaScript 和 XML. (2)AJAX 是一种用于创建快速动态网页的技术. (3)通 ...
- 让Ajax更简单
之前写了一篇 ASP.NET中一种超简单的Ajax解决方案 最近把他拿出来更新了下,把demo也搞的更详细了一点 加入了blqw.Json,所以支持更多类型参数和返回值 优化了对exception的处 ...
- ASP.NET MVC Ajax.ActionLink 简单用法
ASP.NET MVC 项目中,如何使用类似于 iframe 的效果呢?或者说 Ajax 局部刷新,比如下面操作: 我们想要的效果是,点击 About 链接,页面不刷新(地址栏不变),然后下面的内容进 ...
- AJAX 的简单用法:
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX 是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以 ...
- jquery中ajax的简单使用
一.load() 这是最简单的一个函数,传入一个url他会异步加载该url的内容,然后将内容插入每一个选中的元素中,替换掉其中已经存在的内容. 所以最简单的用法是: $("#myDiv&qu ...
随机推荐
- numpy array_split()
numpy.array_split(ary, indices_or_sections, axis=0)[source] Split an array into multiple sub-arrays. ...
- PAT天梯赛练习题——L3-004. 肿瘤诊断(三维连通块并查集)
L3-004. 肿瘤诊断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶 ...
- BZOJ2241 [SDOI2011]打地鼠 【模拟】
题目 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤子每次只能打一只地 ...
- 刷题总结——小z的袜子(bzoj2038)
题目: Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把 ...
- P3147 [USACO16OPEN]262144 (贪心)
题目描述 给定一个1*n的地图,在里面玩2048,每次可以合并相邻两个(数值范围1-262,144),问最大能合出多少.注意合并后的数值并非加倍而是+1,例如2与2合并后的数值为3. 这道题的思路: ...
- 【2018.10.15】WZJ笔记(数论)
1. 证明:对于任意质数$p\gt 3$,$p^2-1$能被$24$整除. 证:平方差公式,$p^2-1 = (p-1)(p+1)$. 再把$24$分解质因数$2^3*3$. 三个相邻的自然数中至少有 ...
- angular中多控制器的依赖注入写法
直接看图,每个控制器有自己的名称,第二个参数中有需要注入的依赖对象,最后是我们的自定义函数,这样我们可以以模块化的方式进行书写.
- java面2
面试试题汇总集: <[面试题]2018年最全Java面试通关秘籍汇总集!> <[面试题]2018年最全Java面试通关秘籍第二套!> <[面试题]2018年最全Java面 ...
- 更改navigationBar 颜色
if (IS_IOS7()) { /* iOS7 时 Navigation 颜色 */ [[UINavigationBar appearance] setBarTintColor: HexCo ...
- laravel 查询构造器
//查询构造器public function query(){ $bool = DB::table('student')->insert([ ['name' => '王五', 'age' ...