CodeIgniter框架入门教程——第三课 URL及ajax
本文转载自:http://www.softeng.cn/?p=74
example.com/index.php/floder/class/function/id/
example.com/index.php/floder/class/function/id1/id2/id3/
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /CI_03/index.php/$1 [L]
function count() {
// 使用输入类接收参数
$num1 = $this->input->post('num1');
$op = $this->input->post('operate');
$num2 = $this->input->post('num2');
if (is_numeric($num1) && is_numeric($num2)) {
// 如果两个数输入均为数字,则调用calculate_model模型下的count方法
$result = $this->calculate_model->count($num1, $num2, $op);
// 采用文本作为格式作为回传值,所以直接返回结果
echo $result;
}else {
echo FALSE;
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>网页计算器</title>
<style type="text/css">
#calculators {
margin: 10% auto;
width:600px;
border:1px solid #000;
}
</style>
<script type="text/javascript">
var xmlhttp = null;
function $(id) {
return document.getElementById(id);
} //创建ajax引擎
function getXMLHttpRequest() {
var xmlhttp;
try {
//Firefox,Opera 8.0+, Safari
xmlhttp = new XMLHttpRequest();
}catch (e) {
//Internet Explorer
try {
xmlhttp = new ActiveXObject("Msxml12.XMLHTTP");
}catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e) {
alert("您的浏览器不支持AJAX!");
return false;
}
}
}
return xmlhttp;
} function isubmit() {
xmlhttp = getXMLHttpRequest(); //怎么判断创建是否成功
if (xmlhttp) {
//以post方式发送
var url = "index.php/calculate/count/";
var data = "num1="+$("num1").value+"&operate="+$("operate").value+"&num2="+$("num2").value;
//打开请求
xmlhttp.open("post", url, true);
//下面这句话是post方式发送时必须要
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//指定回调函数,指定的函数名一定不要带括号
xmlhttp.onreadystatechange = deal;
//发送请求
xmlhttp.send(data);
}
}
function deal() {
//取出从服务器返回的数据
if (xmlhttp.readyState == 4) {
//取出值,根据返回信息的格式而定
$("result").value = xmlhttp.responseText;
}
}
</script>
</head> <body>
<div id="calculators">
<form>
<input type="text" name="num1" id="num1" />
<select name="operate" id="operate">
<option value="add">+</option>
<option value="sub">-</option>
<option value="mul">x</option>
<option value="div">÷</option>
</select>
<input type="text" name="num2" id="num2" />=
<input type="text" name="result" id="result" disabled="disabled" />
<input type="button" value="计算" onclick="isubmit()" />
</form>
</div>
</body>
</html>
function count($num1, $num2, $op) {
if ($op == "add") {
return $num1 + $num2;
}else if ($op == "sub") {
return $num1 - $num2;
}else if ($op == "mul") {
return $num1 * $num2;
}else if ($op == "div" && $num2 != 0) {
return $num1 / 1.0 / $num2;
}else {
return FALSE;
}
}
第三课源代码下载地址:
CodeIgniter框架入门教程——第三课 URL及ajax的更多相关文章
- CodeIgniter框架入门教程——第一课 Hello World!
本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...
- CI(CodeIgniter)框架入门教程——第二课 初始MVC
本文转载自:http://www.softeng.cn/?p=53 今天的主要内容是,使用CodeIgniter框架完整的MVC内容来做一个简单的计算器,通过这个计算器,让大家能够体会到我在第一节课中 ...
- Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导
Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 必要的message类实现 从下面开始是在veins/src/vei ...
- Docker入门教程(三)Dockerfile
Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...
- Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search)
原文:Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...
- WCF入门教程(三)定义服务协定--属性标签
WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...
- SQLite 入门教程(三)好多约束 Constraints(转)
转于: SQLite 入门教程(三)好多约束 Constraints 一.约束 Constraints 在上一篇随笔的结尾,我提到了约束, 但是在那里我把它翻译成了限定符,不太准确,这里先更正一下,应 ...
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(三)
这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) GitHub 代码同步更新:ht ...
- Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis
https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html?tid=6 ...
随机推荐
- [原]openstack-kilo--issue(七):虚拟机怎么通外网,外网怎么ping通虚拟机
=====问题======= 虚拟机可以ping通外网,外网能ping通虚拟机但是收不到reply 这个问题本人遇到有两种情况: 1.安装完整openstack-kilo后,在route中和虚拟机中抓 ...
- 设计模式C#实现(十二)——装饰模式
意图 0 适用性 1 结构 2 实现 3 效果 4 参考 5 意图 动态的给一个对象添加一些额外的职责. 适用性 动态的为单个对象添加职责而不影响其他对象 处理那些可以撤销的职责(? 在某些功能不需要 ...
- IOS中修改图片的大小:修改分辨率和裁剪
在IOS开发中,经常有限制图片文件大小的,有的用户图片很大,导致上传时间慢,造成问题. 如:微信分享中,如果图片的大小好像大于50kbytes,就分享失败,而且没有任何提示. 所以,我添加了两个函数: ...
- MMORPG大型游戏设计与开发(构架)
游戏整体是以经典的武侠世界/天龙八部作为基本的一种设计模式,大致分为以下几个部分. 游戏的简单的一次处理流程如下,不过有些凌乱,还有待完善. 程序设计方面,服务器基本上分为数据处理.日志.网络等模块, ...
- 在PYTHON中使用StringIO的性能提升实测(更新list-join对比)
刚开始学习PYTHON,感觉到这个语言真的是很好用,可以快速完成功能实现. 最近试着用它完成工作中的一个任务:在Linux服务器中完成对.xml.gz文件的解析,生成.csv文件,以供SqlServe ...
- ATM模拟程序
一个很简单的ATM模拟程序 #include <stdio.h> void chaxun(int a3){ int b; b=a3; printf("您的余额为:%d\n&quo ...
- 迄今最深入、最专业的Hololens评测结果,美国AR大咖艾迪·奥夫曼现身说法
http://blackx.baijia.baidu.com/article/530213 在空间记忆方面,HoloLens也有着自己独特的解决方案. 在支持Tango的设备中,将一个虚拟物体放置在某 ...
- JVM再了解了解
转自 http://www.cnblogs.com/Coda/p/4331432.html 相信大家已经了解到Java具有跨平台的特性,可以“一次编译,到处运行”,在Windows下编写的程序,无需任 ...
- GIT安装和使用
GIT 首先登陆github账号 在本地创建一个文件夹 点击文件夹,右键,选择Git create repository here 操作之后,会生成一个.git文件(这个文件为隐藏文件) 在此 ...
- Linux字符设备驱动解析
1.驱动即是一个内核模块,需要模块初始化函数 module_init() module_exit() 2.分配cdev struct cdev dev; 3.初始化cdev并定义file_operat ...