魏长东

weichangdong

东邪

thinkphp的ajax操作

ThinkPHP框架自带了一个易于扩展的JS类库,并且通过标签库技术和JS方法轻松导入。这个规范类似于ThinkPHP基类库的命名空间导入方式,并且该规范同样可以适用于CSS文件的导入。
基于标签库技术的JS类库引入方法
<html:import type='js' file='Js.Base' />

 <html:import file='Js.Util.Calendar' />

当然,我们还有更为简单的导入方法:

<load href=“__PUBLIC__/Js/Base.js” />
<load href=“__PUBLIC__/Js/prototype.js” />
<load href=“__PUBLIC__/Js/mootools.js” />
<load href=“__PUBLIC__/Js/Ajax/ThinkAjax.js” />



// 发送Ajax请求
send(提交URL,提交参数,结果显示DIV对象或者ID,更新显示效果,定时执行时间间隔)

// 发送表单Ajax操作
sendForm(表单对象或者ID,提交URL,结果显示DIV对象或者ID,更新显示效果)

// 绑定Ajax操作到HTML元素和事件
bind(源HTML元素或者ID,绑定事件,提交URL,提交参数,结果显示DIV对象或者ID,更新效果)

// 页面加载时候进行Ajax操作
load(提交URL,提交参数,结果显示DIV对象或者ID,更新效果)

// 定时执行Ajax操作
repeat(提交URL,提交参数,结果显示DIV对象或者ID,执行间隔,更新效果)

简单示例:

 // 页面加载时执行通过Ajax操作在后台执行load.php

SmartAjax.load('http://localhost/load.php',"name=thinkphp","result");

// 绑定click操作到id为run的html元素,执行Ajax

SmartAjax.bind('run','click','http://localhost/hello.php',"name=thinkphp","result");

// 每隔1秒种执行time.php,输出

SmartAjax.repeat('http://localhost/time.php',"",$('timer'),1000);

// Ajax方式提交表单数据

SmartAjax.sendForm('login', APP+'/User/checkLogin/','result',doLogin);

  当然,上面只是SmartyAjax简单示例,那么ThinkAjax是对其进行的封装,他如何使用?

  其实,在实际开发过程中我们使用ThinkAjax完成Ajax操作主要使用的是

ThinkAjax.sendForm  ()和ThinkAjax.send()

使用方法:

首先在View页面引用前面的4个JS类库

然后为页面元素设置事件触发AJAX操作

使用上面的两个方法

ThinkAjax.sendForm(‘formId’,‘__URL__/action/’,complete,’re’);

第一个参数代表提交id为form1的表单

第二是参数是提交的地址

第三个参数,若是提交成功,履行的函数名称

第四个参数,就是显示"数据措置惩罚中~"这些提示信息的Div的id。

在后台方法中要使用

$this->ajaxReturn($username,'登录成功!',1);

作为Ajax返回数据

其中$username为要返回的数据

‘登录成功’是返回的状态文本

1是我们用来判断是否成功的标志,1为成功,0为失败

complete 函数写法

function complete(data,status){

  if (status==1)
      {
   操作

  }else{

  }

}
这两个参数指的是$this->ajaxReturn($username,‘登录成功!’,1); 中的$username和1,’登陆成功’这个信息会被自动填充到前面指定的DIV中,成功为蓝色,失败为红色

 ThinkAjax.send (URL, ajax=1&要传输的变量=数据,接信息的DIV);

相对于sendForm方法,这个方法没有回调函数

后台一般使用

$this->success(信息);--成功

 或是$this->error(信息);--失败

来操作