周末给自己放了一个小假,周五晚上跟同学出去吃饭,周六又休息了一天,直到周日才坐到电脑前面码字。

本来说好周末这两天把之前三篇的代码根据评论中的建议好好修改一下的,顺便认真系统地学习一遍HTML基础。结果现在看来是赶不及了,因为这篇文章写完后要给妹子看,毕竟课程设计的进度也能拖太久,已经过了一个星期,只剩半个月的时间不到。我打算等整个系列写完之后,再花足够多的时间来整理完善,可以根据初学者的特点增加一些内容:例如如何学习HTML、如何找出PHP代码中的BUG并解决之类的东西。因为老同学很用功,很多东西都不需要我讲,她自己就看书看懂了,省了不少事。

遇到一个知道努力而且聪明的“学生”是多么的不容易,相信很多以各种形式当过“老师”的朋友都会有这样的感叹。既然遇到了,那就更应该以一个负责任的态度去教。写博客,其实也是一样的道理,既然有这么多的点击率(其中至少有那么几个人是抱着学习参考的目的来看的),那就必须要尽心尽力去写好。

作为程序员,整天面对着电脑以及身处一个男女比例极端失调的工作群体,能跟女性接触的机会本来就难得,要想遇到一个令自己动心而且对方还对自己有好感的女生就更是难上加难了。所以,如果真的缘分来到,让你遇上一个这样的女孩子,一定要好好珍惜。就像之前几篇说的那样,只要拿出琢磨代码和BUG的十分之一精力好好待她,就不会有什么大问题。虽然我还没毕业参加工作,但是常常会听说IT行业经常需要加班加点,甚至周末也没时间陪女友陪家人。实际情况是不是真的如此,是不是非常普遍,希望大家能在评论中告诉一下楼主自己切身和听闻的现实情形。然而无论如何,珍惜眼前人,待好眼前人毕竟才是最重要的。想想办法,抽出时间,多跟自己心仪的女生约会,多跟交心的朋友聚会,多回家陪陪逐渐年迈的父母。

且不说感情需要维系,能跟他们在一起的日子,已经在飞逝的流光中越来越少了。——写在毕业前九个月。

—————————————————————闲聊结束——————————————————————

前情回顾:在第(3)篇中,我们一起给妹子示范了如何与数据库进行简单的交互,并且讲解了简单的MVC架构原理。妹子在看完博客之后,我就让她先想好项目的框架到时候要怎么搭,有多少个文件,文件之间的关系又是怎么样的。下面,让大家看看她的一部分成果:

 1 四、管理资源的页面  OK
 2 Veiw:
 3 [8] 管理资源页面manage.php(管理资源界面的视图,显示添加资源,添加资源时必须给该资源选择一个资源类型,若没有匹配的资源类型,旁边有一个可以选择添加资源类型的超链接,连接到manage_type.php。表单action到do_manage.php那里,用js判断是否有空的选项)
 4 [9]添加资源类型页面manage_type.php。可以设置资源的最小单位和起始时间。
 5 Control:
 6 [10]处理增加信息 do_manage.php(处理manage.php传来的数据。利用Class_manage类里的resource_exist()方法,判断是否已经有该资源,有,return 1。若没有该资源,利用insert_resource()方法添加资源到数据库resource。)
 7 [11]处理增加资源类型do_manage_type.php(处理manage_type.php传来的数据。利用Class_type类里的type_exist()方法,判断是否已经有该资源,有,return 1。若没有该资源,利用insert_type()方法添加资源到数据库type。)
 8
 9 Model:
10 [12]自定义处理管理资源的类do_manage_model.php(定义Class_manage类,
11 方法有: resource_exist(资源类型,资源名称)方法判断是否已经有该资源。 insert_resource(资源名,资源类型)方法,插入数据库。)
12 [13]Class_type类(Type_exist(资源类型)方法,用于在添加资源类型时,判断是否有该资源类型。Insert_type(资源类型,开始时间,结束时间,时间单位)插入数据库)

令人惊喜的是,妹子已经对整个项目的框架有所把握了,那么我现在要做的事是什么呢?有人可能会想,既然框架都已经在自己的帮助下七七八八了,剩下自己就安心做别的,等妹子在开发过程中遇到什么问题再问自己好了。这样的想法不能说是错,但是,如果我们可以事先把项目中的一些关键地方帮妹子想好解决方案,到时候就会省去她很多的摸索时间以及也可以让自己不会因为临时遇到问题为了尽快回答而给出一个比较没那么好的策略。(而且,我们邪恶地想想,妹子刚遇到问题我们就给出一个近乎完美的解决方案,然后还装X地说:“早知道你会遇到这个问题,我都帮你想好啦。”妹子顿时感觉自己体贴入微有木有啊!!!顿时对自己加分加分再加分有木有啊!!!)

例如就这个管理资源页面——有许多不同的资源,那么每个资源的显示方式不尽相同,如果每切换一个资源或一类资源就切换一次页面的话,不仅用户体验不太好(想象一下你每切一个资源就刷新好久),而且还会对网络负载带来不必要的负担。因为不同的资源它们的资源管理页面都大致相同,某些部分是一模一样的,所以,我想看到这里,许多人都会跟我想到一块儿去,那就是传说中高端大气上档次的AJAX。

读音:e:j^ks 。AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。——来自《百度百科》

看完这些,其实妹子也不会对AJAX有多少认识,我们还是直接上例子吧!通过实际的示范,说明它到底是是一个什么样的东西。

第八步:简单的AJAX示范

声明:代码重构来源自陈浩编著的《零基础学PHP》。另外也介绍大家看看这本书,对于新手入门还是蛮不错的,但深层次的东西却几乎没有。

首先,我们看一下HTML+JavaScript的部分(妹子问我,JavaScript跟Java是什么关系啊?看起来这么像。我引用网上说法,回答说:嗯嗯,大概就是雷锋跟雷峰塔的关系吧。)

ajax.html

  1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2 <html>
  3 <head>
  4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5 <title>ajax应用实例</title>
  6
  7 <script language='javascript'>
  8 var xmlHttp=null;
  9
 10 /*
 11  * 获取XmlHttpRequest对象
 12  * 使用XMLHttpRequest对象是实现AJAX技术的第一步
 13  */
 14 function GetXmlHttpRequest()
 15 {
 16     var xmlHttp=null;
 17     /*
 18      *由于不同的浏览器使用不同的方法创建XMLHttpRequst对象
 19      *例如IE使用的是ActiveXObject
 20      *所以在这里使用try-catch嵌套形式创建该对象
 21      */
 22     try
 23     {
 24         xmlHttp = new XMLHttpRequest();//对于Firefox等浏览器
 25     }
 26     catch(e)
 27     {
 28         try{
 29             xmlHttp = new ActiveXObject("Msxm12.XMLHTTP");//对于IE浏览器
 30         }
 31         catch(e)
 32         {
 33             try{
 34                 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
 35             }
 36              catch(e)
 37             {
 38                 xmlHttp = false;//若返回false,表示创建对象失败
 39              }
 40         }
 41      }
 42
 43 return xmlHttp;   //返回XMLHttpRequest对象
 44 }
 45
 46 function sendRequest()    //发送异步请求
 47 {
 48     //获取表单的文本框province的值
 49     var prov_name = document.getElementById("province").value;
 50
 51     if((prov_name == null) || (prov_name == ""))
 52         return;
 53
 54     xmlHttp = GetXmlHttpRequest();
 55     if(xmlHttp == null)
 56     {
 57         alert("浏览器不支持XmlHttpRequest!");
 58         return;
 59     }
 60
 61     //构建请求的URL地址
 62     var url = "ajax.php";
 63     url=url+"?prov="+prov_name;
 64
 65     xmlHttp.open("GET",url,true);//使用GET方法打开一个到url的连接,为发出请求做准备
 66     xmlHttp.onreadystatechange = updatePage;//设置一个函数,当服务器处理完请求后调用,名为updatePage
 67     xmlHttp.send(null);//发送请求
 68 }
 69
 70 function updatePage()   //定义回调函数,处理服务器响应
 71 {   /*
 72      *当readyState属性值为4时,表示相应加载完毕;status属性值为200时,表示一切正常
 73      *更多XMLHttpRequest对象的属性及其含义请参考相关资料
 74      */
 75     if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
 76     {
 77         var response = xmlHttp.responseText;//获取服务器返回的数据,以字符串的形式给出
 78         document.getElementById("city").innerHTML = response;//设置内部HTML为response的内容
 79     }
 80 }
 81 </script>
 82
 83 </head>
 84
 85 <body>
 86 <h3>请选择一个省(自治区):</h3>
 87
 88 <form action="ajax.php">
 89     <div>
 90     <select id="province" onchange="sendRequest()">
 91         <option value="">请选择一个省(自治区)</option>
 92         <option value="ah">安徽</option>
 93         <option value="fj">福建</option>
 94         <option value="gs">甘肃</option>
 95         <option value="gd">广东</option>
 96         <option value="gx">广西</option>
 97         <option value="gz">贵州</option>
 98         <option value="hn">海南</option>
 99         <option value="hb">河北</option>
100         <option value="hh">河南</option>
101         <option value="hl">黑龙江</option>
102     </select>
103     </div>
104 </form>
105
106 <div id="city">
107 </div>
108
109 </body>
110 </html>

再来看看服务器端的PHP代码,ajax.php

 1 <?php
 2 $city_arr = array(
 3 "ah"=>"合肥",
 4 "fj"=>"福州",
 5 "gs"=>"兰州",
 6 "gd"=>"广州",
 7 "gx"=>"南宁",
 8 "gz"=>"贵阳",
 9 "hn"=>"海口",
10 "hb"=>"石家庄",
11 "hh"=>"郑州",
12 "hl"=>"哈尔滨"
13 );
14
15 if(!empty($_Get['prov'])){
16     $prov = $_GET['prov'];//获取GET请求中的prov参数
17     echo $prov ;
18     echo iconv("GB2312","UTF-8",'<font color = "red">您没有选择省(自治区)</font>');
19     //使用PHP的iconv函数做字符编码转换,以便XMLHttpRequest对象能够正确显示数据
20 }
21 else
22 {
23     $prov = $_GET['prov'];
24     $city = $city_arr[$prov];
25     echo iconv("GB2312","UTF-8",'所选省(自治区)省会(首府)为:'.$city);//显示对应的省会(首府)城市
26 }
27 ?>

大家可以把代码复制一下,好好感受ajax到底是什么东西。我觉得学习是一个由浅入深的过程,有些看不懂的地方可以暂时放一放,先用起来再说。
     另外,这次的例子最后向浏览器相应的是一个字符串,而不是XML。之所以这样安排,是为了便于妹子理解AJAX的工作原理以及使用方法,而不用同时再去学习XML方面的知识,造成过多的压力。

然而,服务器的相应是XML才更符合AJAX的本质。如果浏览器端得到的相应是XML,那么在回调函数中就要实现对XML的处理,最终完成页面内容的更新。至于如何使用PHP处理XML的相关知识和方法,我们下次再说~

————————————————————分割线重出江湖————————————————————

最后聊点别的,不感冒的朋友请直接跳过。

我认识几个父母在自己小时候就离婚的朋友,他们的故事几乎如出一辙:爸妈工作(做生意)很忙,经常不在一起,全家一起吃饭的时间一个星期不到三四次。家里的经济条件越来越好,家的氛围也越来越淡。最后离婚的时候,一个朋友的妈妈问她以后想跟谁一起生活,她的一句话让她妈妈当场流下泪来:“跟谁都一样,反正你们都不管我。”

有些孩子不学好,爸妈一味就只知道训斥,说什么“我在外面挣钱养家,供你上学读书,你还这么不听话?”父母养育儿女,除了把他们“养”大之外,还要“教”他们。总是以忙为理由,跟孩子待在一起的时间少的可怜,成绩不好或者在学校惹事了除了骂还是骂,教过孩子写作业么?平时好好管过孩子么?除了简单粗暴地给钱和把气撒在心智不成熟的孩子身上,还会点什么?

我看见过一条公益广告宣传语,印象很深——再贵的玩具,都比不上爸爸好玩。

周杰伦有一首歌,叫做《我不配》(这会不会暴露我的年龄和品味下限?)。里面有一句歌词:

是我忽略

你不过要人陪

小孩需要人陪,大人也需要人陪。我以后无论工作如何,一定要多回家看看爸妈,哪怕自己工资低给不了多少家用,关心关心他们身体,聊聊最近发生的事,让他们开心点是一点。写着写着,有点想家了。

转载于:https://www.cnblogs.com/levenyes/p/3308361.html

【原创】我是怎么从零开始教女同学进行php开发的(4)相关推荐

  1. 看我是如何严辞拒绝同学借钱的

    看我是如何严辞拒绝同学借钱的      朋友同学之间借钱应急一下本无可非议,但现在许多经验和历史教训告诉我们,借钱给他人就等于失去这个朋友,最后弄得自己也很郁闷甚至是恼怒,所以在这里转一篇关于如何拒绝 ...

  2. python仿真搭建_仿真秀学院|从零开始学ANSA二次开发:如何利用Designer搭建窗口,含安装步骤...

    原标题:仿真秀学院|从零开始学ANSA二次开发:如何利用Designer搭建窗口,含安装步骤 作者 | 团长 仿真秀专栏作者 首发 |仿真秀App 导读:大家好,我是团长,是一名CAEer,还是一名C ...

  3. 从零开始安卓端相机功能开发(二)让我们来开发一个相机

    目前已有章节大家可以去学习也可以参考一下 1.从零开始安卓端相机功能开发(一)了解用什么去开发以及流程 2.从零开始安卓端相机功能开发(二)让我们来开发一个相机 3.从零开始开发Android相机ap ...

  4. 我是如何转型走上计算机视觉OpenCV开发之路的

    我是如何转型走上计算机视觉OpenCV开发之路的 2004年我大学毕业,学的是软件工程专业,第一份工作是在一家日资外包企业,无法忍受学习日语,忍无可忍无须再忍,干了八个月就跳槽啦,来到了第二家公司还是 ...

  5. 从零开始安卓端相机功能开发(一)了解用什么去开发以及流程

    目前已有章节大家可以去学习也可以参考一下 1.从零开始安卓端相机功能开发(一)了解用什么去开发以及流程 2.从零开始安卓端相机功能开发(二)让我们来开发一个相机 3.从零开始开发Android相机ap ...

  6. 安卓app开发工具_最新app制作软件汇总:从零开始教你完成app开发

    手机app这么火,想不想开发一款自己的app?还在担心不懂技术,app外包价格太高?没关系,这里为大家分享最新app制作软件汇总,包含需求分析.原型设计.UI设计.功能开发.上线等全流程,从零开始教你 ...

  7. 《从零开始学微信小程序开发》.pdf

    关注"Java后端技术全栈" 回复"000"获取大量电子书 2016年9月21日,微信小程序正式开启内测.在微信生态下,触手可及.用完即走的微信小程序引起广泛关 ...

  8. beaglebone php,从零开始学BeagleBone Black嵌入式开发

    从零开始学BeagleBone Black嵌入式开发 作者:大学霸 著 出版日期:2015年11月 文件大小:3.30M 支持设备: ¥30.00 适用客户端: 言商书局 iPad/iPhone客户端 ...

  9. 从零开始的 PhotoShop CEP 6开发教程「 1 」配置开发环境

    <从零开始的 PhotoShop CEP 6 开发教程>系列目录 「 0 」目录 「 1 」配置开发环境 「 2 」CEP 文件结构 「 3 」CEP 的运行机制 「 4 」Hello W ...

最新文章

  1. su 和su -的区别
  2. JavaScript基础(一)基本认识
  3. AB1601 Makefile钟优化的问题
  4. Spring Boot项目整合Retrofit最佳实践,最优雅的HTTP客户端工具!
  5. 优化JVM参数提升Eclipse运行速度
  6. Tensorflow学习
  7. 设计模式:组合模式(Composite)
  8. Python入门、进阶经典PDF下载
  9. linux uboot 源码分析,UBoot源码分析1.pdf
  10. 2021年的高考大约多久可以查询成绩,2021高考完什么时候可以查分数 查成绩的时间...
  11. mac html编辑器 免费,Mac下 10 款最棒的编辑器
  12. php 单位食堂订餐,单位饭堂订餐系统(手机订餐)
  13. emysql: ping VS without ping
  14. 小白进阶之wps文字如何同时打开两个文档进行对比
  15. React项目实现导出PDF的功能
  16. HTML5/Canvas太空射击类小游戏源码
  17. 软件测试公司常见的部门有哪些?
  18. 十字路口待转区什么用_左转待转区的几种违章 稍不注意你绝对就要中招
  19. CTFHub-技能树-HTTP协议-响应包源代码
  20. 初学Python可能会遇见的小知识

热门文章

  1. 使用C#改写Peter Norvig的Spelling Corrector
  2. Photoshop: Working Faster Photoshop:高效工作 Lynda课程中文字幕
  3. C语言:对从键盘输入的整数进行求和(scanf( )的高级用法)
  4. 一张熟悉的属于程序员的图片,你能熟悉什么?
  5. 海底捞年营收347亿:同比降16% 关闭50家表现欠佳餐厅
  6. 微信小程序《胡莱三国》----websocket分析
  7. 数据库三大范式(通俗理解)
  8. 装修省钱秘笈有哪些?
  9. 南邮C语言期末考试复习+实验报告
  10. 多多自走棋改动_多多自走棋:体验服版本大更新,全新UI和新增两个龙族棋子...