一直知道

ajax

但是尚未真正了解, 这次看了慕课网的《Ajax全接触》,算是有所收获,入了个门。
需要用到php,因为 Ajax也是向服务器请求(不知道这么解释对不对), 所以还需要配置环境, 我用的是 phpstudy ,很简单好用
请先了解过 http
(没创建数据库, 所以并没有真正的保存)


随便写个静态页面

<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>请选择员工性别:</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>
写一个叫 server.php 的页面,作用是响应前端发送的请求

<?php//设置页面内容是html编码格式是utf-8
header("Content-Type: text/plain;charset=utf-8"); //定义一个多维数组,包含员工的信息,每条员工信息为一个数组
$staff = array(array("name" => "洪七", "number" => "101", "sex" => "男", "job" => "总经理"),array("name" => "郭靖", "number" => "102", "sex" => "男", "job" => "开发工程师"),array("name" => "黄蓉", "number" => "103", "sex" => "女", "job" => "产品经理"));//判断如果是get请求,则进行搜索;如果是POST请求,则进行新建
//$_SERVER是一个超全局变量,在一个脚本的全部作用域中都可用,不用使用global关键字
//$_SERVER["REQUEST_METHOD"]返回访问页面使用的请求方法
if ($_SERVER["REQUEST_METHOD"] == "GET") {search();
} elseif ($_SERVER["REQUEST_METHOD"] == "POST"){create();
}//通过员工编号搜索员工
function search(){//检查是否有员工编号的参数//isset检测变量是否设置;empty判断值为否为空//超全局变量 $_GET 和 $_POST 用于收集表单数据if (!isset($_GET["number"]) || empty($_GET["number"])) {echo "参数错误";return;}//函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。//global 关键词用于访问函数内的全局变量global $staff;//获取number参数$number = $_GET["number"];$result = "没有找到员工。";//遍历$staff多维数组,查找key值为number的员工是否存在,如果存在,则修改返回结果// 把 $staff 循环给新的变量 $value, 然后可以做一些操作foreach ($staff as $value) {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;}// 没做数据库: 获取POST表单数据并保存到数据库//提示保存成功echo "员工:" . $_POST["name"] . " 信息保存成功!";
}
现在开始是js部分
// GET 请求的查询
document.getElementById("search").onclick = function() { // 创建一个 XMLHttpRequest对象(老版本 ie5\6 是 ActiveXObject)var request = new XMLHttpRequest();// 开始一个GET 请求, server.php就是上面的那个php 文件, true表示异步 默认就是true。// GET 请求都是用 url来传输,所以就获取输入在 #keyword 中的数字, 来和php 中的 $number 对应查找request.open("GET", "server.php?number="   document.getElementById("keyword").value, true);/***  open() 和 send() 是一起使用的*  用来向 open() 中的请求体(server.php) 发送请求*  具体请自行搜索 send()的语法,比较长*/request.send();/***  send() 后会触发 onreadystatechange *  结束时会把 readyState 变成4*  而页面正确时的 status 是200*  所以,依此做一个判断*/request.onreadystatechange = function() {if (request.readyState===4) {if (request.status===200) { // responseText 是 server.php 的返回值document.getElementById("searchResult").innerHTML = request.responseText;} else {alert("发生错误:"   request.status);}} }}// POST 请求的保存
document.getElementById("save").onclick = function() { var request = new XMLHttpRequest();request.open("POST", "server.php");// 是保存, 所以获取各值, & 是连接数据的格式?var data = "name="   document.getElementById("staffName").value "&number="   document.getElementById("staffNumber").value "&sex="   document.getElementById("staffSex").value "&job="   document.getElementById("staffJob").value;// POST 请求时,在 open() send() 中间要设立一个头信息request.setRequestHeader("Content-type","application/x-www-form-urlencoded");// 将 data 传送过去request.send(data);request.onreadystatechange = function() {if (request.readyState===4) {if (request.status===200) { document.getElementById("createResult").innerHTML = request.responseText;} else {alert("发生错误:"   request.status);}} }}

一个简单的Ajax 差不多就是这样了

数据还可以用JSON 的方式, 仅需要改动几个地方

 // php 中 将 echo 的值改成 JSON格式,例如:if (!isset($_GET["number"]) || empty($_GET["number"])) {echo $jsonp . '({"success":false,"msg":"参数错误"})';return;}// js 中// 触发 onreadystatechange 后, 它的回调函数里创建一个调用了 JSON.parse 方法的变量来保存 server.php的返回值,例如:var data = JSON.parse(request.responseText);// data.success 的 success 也是 php 里设定的// alert 一下alert(data);  //  出了两个 object...// 那试试 console.log 吧console.log(data);  // Object {success: true, msg: "找到员工:员工编号:101, 员工姓名:洪七,员工性别:男, 员工职位:总经理"}if (data.success) {document.getElementById('searchResult').innerHTML = data.msg;} else {document.getElementById('searchResult').innerHTML = '出现错误:'   data.msg;}// 这样就可以调用 php 文件里返回的值了

视频中还有讲到 jQuery中的Ajax写法 和 jQuery中跨域时怎么请求

jQuery 的写法很简单, 比原生的简便太多了。 我也就不总结啦,

若有不合适之处, 还望指点一二

(:з」∠)

更多专业前端知识,请上 【猿2048】www.mk2048.com

初学 Ajax(涉及 php)相关推荐

  1. 初学Ajax相关知识

    一. 概念 ASynchronous JavaScript And XML    异步的JavaScript 和 XML  >>>异步和同步:客户端和服务器端相互通信的基础上    ...

  2. 信息传递服务器,AJAX的与服务器之间的信息传递原理(初学)

    最近一直在弄自己的博客www.aleiblog.com,进去看看吧,又不会怀孕 今天初学AJAX,还没有完全感受到它的强大,刚开始有不少不懂得地方,看了资料的的第一章时,似乎明白了不少. AJAX为浏 ...

  3. 零基础AJAX入门(含Demo演示源文件)

    零基础AJAX入门(含Demo演示源文件) 作者:一点一滴的Beer  个人主页:http://www.cnblogs.com/beer 摘要:因为笔者的大四毕业设计是做WebGIS系统,用过Web版 ...

  4. struts2 jquery ajax 局部刷新遇到的各种问题

    我们的网站一开始都是由前台提交表单到action,每次一个小操作整个页面都会刷新,影响用户体验,这次由我实现部分功能的局部刷新,但是初学ajax遇到不少问题 1.我们在struts.xml外扩展了一个 ...

  5. AJAX开发简略 (转)

    AJAX开发简略... 1 一.AJAX定义... 3 二.现状与需要解决的问题... 3 三.为什么使用AJAX. 4 四.谁在使用AJAX. 6 五.用AJAX改进你的设计... 6 例子1:数据 ...

  6. 深入理解ajax系列第一篇——XHR对象

    前面的话 1999年,微软公司发布IE5,第一次引入新功能:允许javascript脚本向服务器发起HTTP请求.这个功能当时并没有引起注意,直到2004年Gmail发布和2005年Google Ma ...

  7. Ajax+asp.net无刷新验证用户名

    注册用户页面代码如下 <script language="javascript" type="text/javascript"> var xmlHt ...

  8. WEB前端 深入了解JavaScript ajax—XHR对象

    前面的话 1999年,微软公司发布IE5,第一次引入新功能:允许javascript脚本向服务器发起HTTP请求.这个功能当时并没有引起注意,直到2004年Gmail发布和2005年Google Ma ...

  9. 【JavaScript】Ajax

    文章目录 1. 前后端交互 2. Ajax 2.1 Ajax概述 2.2 Ajax如何工作 2.3 XMLHttpRequest对象 2.4 使用Ajax eg:使用ajax实现页面的数据通过Node ...

最新文章

  1. Hermes实时检索分析平台
  2. SAP财务管控 财务总监背后的“管理大师” PDF下载
  3. java内存问题怎么排查,java占内存高排查 java应用占用内存过高排查的解决方案...
  4. 二十四、爬取古诗网中的100首古诗文
  5. 为什么当代人越来越不快乐?
  6. node.js初入手
  7. 原始图像扩展_Resize Sense for Mac(图像处理软件)
  8. 锤子科技 php 面试,面试没通过 锤子新品遭面试者曝光
  9. Microsoft Endpoint Protection for Windows Azure客户技术预览版可供免费下载
  10. 咏南IOCP REST中间件
  11. CDN原理 CDN技术是什么
  12. 二次开发环境执行后台事务定义中断问题解决办法
  13. vue动态路由,刷新页面空白问题
  14. Debian 10 安装fonts-noto-cjk
  15. ionic入门教程第十一课-简要说明ion-list、ion-item完成列表页ion-infinite-scroll上拉加载ion-refresher下拉刷新
  16. Word 在试图打开文件时遇到错误 解决办法
  17. estimate 和 estimation
  18. 【经验分享】技术说“实现不了”的潜台词
  19. C#人民币大小写金额转换(C#版本)
  20. Linux·信号量全解

热门文章

  1. 【MFC系列-第18天】企业信息管理软件开发
  2. 软件连接oracle失败怎么办,【编程开发工具】navicat连接oracle失败怎么办
  3. dense rank改为mysql_mysql上排名sql的写法,类似oracle的rank和dense
  4. 输入法问题_「图」KB4515384再爆新问题:OOBE时中文输入法阻止创建本地账户
  5. linux下用c语言打印hellword,用C语言写一个Helloworld_实现第一步编译运行
  6. vector c++ 赋值_面对拷贝赋值时发生的自我赋值的正确态度时接受而不是防止
  7. 计算机研发部门职责,计算机研发岗位职责
  8. 第三章 使用单元测试测试简单的首页
  9. conflicting types for ‘方法名’ 的错误
  10. javascript arguments