辛星浅析一次ajax的实现过程

说到ajax,那绝对是一个老生常谈的话题,近些年ajax技术的使用颇为盛行。

以下我们就以jQuery为例来从一个真实的项目中看一下ajax的实例。

首先是前端页面,这个页面我们使用的是bootstrap和自己的若干技术,最后我们有一个button。它的源码例如以下:

$deal .= '<a href="javascript:void(0);" class="btn btn-danger btn-mini" onclick="deleteOne('.$Id.');">删除</a>';

相信有js基础的朋友们读懂这个代码不是问题。这里须要说明几点:

1.它使用了bootstrap。因此我们会看到诸如btn  btn-danger  btn-mini这些东西,

2.它调用了一个deleteOne()函数,而该函数中的參数$Id是PHP中的变量。

然后就是这个deleteOne方法的代码,注意这里我们导入了jQuery库。当然另一些其它的库。这里仅仅写当中比較重要的部分代码:

<script type="text/javascript">
	var base_url='<?php echo base_url();?>';
	$(function(){
		deleteOne=function(id,time){
			var t='3000';if(isNullOrEmpty(time)){t='3000';}else{t=time;}
			var icon='<?php echo base_url();?

>assets/dialog/icons/';
			showDialog('确定要删除?',function(){
				var url='<[email protected]$site_url.'/'[email protected]$module.'/delete';?>';
				var data={'Id':id}
				$.ajax({
			        //async: true,//是否为异步请求
			        type: "POST",//GET  POST
			        url: url,
			        //data: data,
			        data:'Id='+id,
			        //dataType: "json",
			        //beforeSend: function(XMLHttpRequest, textStatus){},
			        success: function(data){//,textStatus
				        //console.log(data);
				        var msg=data.message;
				        //if(data.status){refreshGrid();i='succeed.png';}else{i='info.png';}
				        showDialog(msg);
				        window.location.reload();
			        }
			        //complete: function(XMLHttpRequest, textStatus){},
			        /*error: function(XMLHttpRequest, textStatus, errorThrown){
			        	var msg=("Error");i='error.png';
			        	showDialog(msg);
			        }*/
			    });
			});
		}
	});
</script>

到这里。我们还差一步就完毕了。就是delete方法,以下是它的实现过程:

public function delete(){
		if (! isPost ()) {
			$msg='输入的链接不对!

';
			showErrorMsg($msg);
		}
		$action='delete';
		$module=$this->module;
		$arrLang=lang('common_'.$module);
		$title=$arrLang[$action];

			$arr_post=$this->input->post();
			$arr_post=setForm($arr_post);
			[email protected]$arr_post['Id'];
			$status=FALSE;
			$logType=0;

			if(!isNullOrEmpty($Id)){
				$del_where=array('ID'=>$Id);
				$this->common_model->table='mx_changci';
				$result = $this->common_model->delete( $del_where );
				if ($result) {
					$status = TRUE;
					$message =  $title.'成功!

';
				} else {
					$status = FALSE;
					$message =  $title.'失败!';
				}

			}else{
				$status=FALSE;
				$message= $title.'出错!

';
				$logType=3;
			}

		$jsonData['status']=$status;
		$jsonData['message']=$message;
		header("Content-type: application/json");
		echo json_encode($jsonData);
	}

这就是我近期參与的项目中的一个简单的ajax的实现

时间: 2024-11-05 22:46:09

辛星浅析一次ajax的实现过程的相关文章

辛星浅析You don&#39;t have permission to access / on this server.的解决办法

通常我们会遇到"You don't have permission to access / on this server."的提示,从字面意思是说,我们没有访问本服务器的权限,那么它常见的问题又是什么呢? 第一个假如是虚拟主机,那么可能是虚拟主机配置的错误,我们在<VirtualHost>对里面配置的时候,在其子配置项中,我们在<Directory>中修改为如下即可: Order  allow,deny Allow  from all 第二个原因就是我们没有响应

辛星浅析tar命令的基本使用

我们通常使用tar命令来对文件或者目录进行打包或者压缩,可能朋友们刚接触的时候会有点晕,百度搜的时候就和查手册一样,不够通俗易懂,今天辛星就给朋友们用另一种方式去解决这个问题. 我们首先还是要对它的几个关键参数认识一下的: -c  表示创建一个打包文件,这里的c是create的首字母 -x   表示解包一个已经打包的文件 -t    表示查看一个tar包里面的文件 因此,c和x和t这三个参数只能存在一个,不能同时存在,因为我们不能在打包的同时又解包 然后就是两个常见的与压缩有关的参数: -z  

辛星浅析跨域传输的CORS解决方案

首先我们有一个概念,那就是"同源准则",也就是same-origin  policy,它要求一个网站(协议+主机+端口号)来确定的脚本.XMLHttpRequest和Websocket无权去访问另一个网站的内容. 如果设置不正确,它通常会报错如下:No 'Access-Control-Allow-Origin' header is present on the requested resource. 所谓CORS,也就是Cross-Origin  Resource  Sharing,它

辛星浅析网站中的sitemap

所谓sitemap,通俗来说就是"网站地图",sitemap文件主要包含了网站中的有效连接,它会便于搜索引擎的抓取和收录,如果没有sitemap文件,蜘蛛就需要一个一个的通过我们网站中的超链接来进行抓取.有了sitemap之后,搜索引擎直接读取该文件就可以了,它可以让搜索引擎抓取我们的网页更加有效. 最通用的也是最简单的sitemap形式的文件,就是xml文件,我们在其中列出网站中的网址,以及关于每个网址的一些元数据.这些元数据通常是上次更新的时间.更新的频率.重要程度等等,它可以让搜

辛星浅析php中coment技术的实现

第一,何谓推送技术 随着人们对web越来越熟悉,人们希望web应用可以像本地应用一样可以实时的接收消息,于是也就有了所谓的"推送技术".也就是我们所说的Server Push,也就是"服务器推技术",它的典型范例就是聊天.消息提醒.交友网站中使用比较频繁,成为实时应用中的一个热点问题. 第二,传统实现(拉取技术) 有一个很类似的实现机制,也就是传统的ajax,它是每隔一段时间去服务端拉取一次信息,但是这种方式会特别消耗资源.它需要时时刻刻去问服务器是否可以请求到数据

辛星浅析Redis中与key有关的命令

在Redis中,我们还可以直接对key直接操作,下面是我们常用的主要命令: (1)keypattern   它表示获取所有匹配pattern的keys,这里需要注意的是,我们应该避免使用该命令,因为对于大型数据库而言,该命令非常耗时,对Redis服务器的性能打击也是比较大的.它支持glob-style的通配符格式,比如用*表示任意一个或者多个字符,用?表示任意字符,用[xyz]表示方括号中的任意一个字母. (2)del   key ....   它是从数据库中删除参数中指定的keys,如果指定的

辛星浅析kill、pkill的区别

首先说一下kill命令,它是通过pid来杀死进程,要得到某个进程的pid,我们可以使用ps命令,默认情况下,kill命令发送给进程的终止信号是15,但是有些进程不会理这个信号,这样的话,可以用9信号来强制杀死,信号9是不会被忽略的强制性执行信号. 而killall和pkill都是使用命令名来终止进程的有效手段,它们不同于kill通过pid来杀死进程的方式,它可以理解为成批成批的杀死进程,当然这么做的危险性也相对提高了不少.当然它们也可以给进程发送相应的终止信号. 比如我们要杀死apache的相关

辛星浅析git中的submodule

有时候,我们需要将一些通用的部分抽取出来做成一个公共库,它可以给别的工程使用,而公共代码库的版本管理是比较麻烦的.我们可以使用git中的submodule来做到这一点. 1.添加 为当前工程添加submodule,命令格式是:git   submodule   add   仓库地址    路径 在添加完成后,在当前工程路径下会生成一个名为".gitmodules"的文件,它记录了子模块的信息,添加完成之后,将子模块所在的文件夹添加到工程中即可. 2.删除 删除submodule,我们首

辛星浅析Redis中的配置文件

Redis中的主要配置项如下: (1)daemonize  yes     它表示是否在后台运行,如果写成yes,那么在后台运行,如果是no,则表示不在后台运行. (2)pidfile  /var/run/redis.pid 当Redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,我们也可以在运行多个Redis服务时,指定不同的pid文件和端口 (3)port    6379    指定Redis运行的端口,默认是6379 (4)127.0.0.1