一:引子 学习ThinkPHP框架已经有一个星期了,虽然会动手做一些小demo,但总觉得只是了解其中的一些皮毛,停留在那种能做出来但不能解锁其中的原由阶段。还老是出现今天学过的过了几天就会忘,好好想想还是因为自己没怎么总结,总觉得总结这事其实是在浪费时间,每次想到要写总结的时候就会给一个借口“有这总结的时间我又可以学一些其他的知识了”。就因为这样已经半年多没写博客了,今天为何又坐在电脑前来写呢?因为每次在遇到以前的问题时候想要去找答案的时候,总是只能在别人的博客上去寻找答案,而自己以前明明解决了的怎么就是想不起来。这个时候才了解到那句好记星不如烂笔头的告言来。同时也能隐约的感觉到自己的成长。废话不多说,直接进入正题...
二:准备 硬件是电脑的躯体,软件是其灵魂。在好的软件没有硬件的支持是不能跑起来的。ThinkPHP中ajax提交信息也一样,也得有载体,不然是无法完成任务的。在这里将用我们需要用到的js类库
jquery.form.js、jquery.min.js。在html文件中加载类库
<load href="__PUBLIC__/JS/jquery.form.js"/>
<load href="__PUBLIC__/JS/jquery.min.js"/>
三 提交:到底Ajax是怎么提交表单信息的呢?这里就需要用到两个函数了。首先得用到下载好的Jquery 插件里面的
AjaxForm()方法,但是该方法只是并不能提交表单,他只是为提交表单做准备工作。但执行提交的时候还得靠
AjaxSubmit()方法去执行。
$(function(){
$('#form1').ajaxForm({
beforeSubmit: checkForm, // 在点击之前(表单已经填好)执行
//当提交好表单以后调用ajaxSubmit来提交准备好的表单。在action 里面有ajaxReturn()返回。
success: complete, // post-submit callback
dataType: 'json'
});
}
从这代码我们可以知道,当取得id值为form1的表单时候,执行了两个方法首先
checkForm,在这里就检验表单的标题是否为空。
function checkForm(){
if( '' == $.trim($('#title').val())){
$('#result').html('标题不能为空').show();
return false;
}
//可以在此添加其它判断
}
另一个就是根据AjaxReturn()方法的信息判断status是否为1来执行
complete方法:
function complete(data){
if (data.status==1){
$('#result').html(data.info).show();
// 更新列表
data = data.data;
var html = '<div class="result" style=\'font-weight:normal;background:#A6FF4D\'>' +
'<div style="border-bottom:1px dotted silver">标题:'+data.title+' [ '+data.create_time+' ]</div>' +
'<div class="content">内容:'+data.content+'</div></div>';
$('#list').prepend(html);
}else{
$('#result').html(data.info).show();
}
}
那么现在问题来了,在这两个方法之间是不是还进行了什么操作呢?他是怎么提交信息和返回信息的?当点击事件发生以后系统就会调用
AjaxSubmit方法将表单信息提交给控制器处理,然后再调用
AjaxReturn返回信息给浏览器。那么我们现在看看控制器Action类中怎么处理表单信息的。
/**
* 使用ajax处理表单数据,根据表单信息
* 向数据库中插入数据。
*/
public function insert(){
$Form = D("Form");
if($vo=$Form->create()){
if(false!==$Form->add()){ //添加成功
$vo['create_time']=date('Y-m-d H:i:s',$vo['create_time']);
//字符串中的每个新行 (\n) 之前插入 HTML 换行符 (<br />)。
$vo['content']=nl2br($vo['content']);
//用ajaxReturn(数据,提示信息,操作状态)方法返回信息给客户端,
$this->ajaxReturn($vo,'表单数据保存成功!',1);
}else{
$this->error('数据写入错误!');
}
}else{
$this->error('输入信息有误。');
}
}
到这里的时候我们似乎明白了一些,但是具体html 文件是怎么触发控制器去执行insert这个处理表单的方法呢。
<form id="form1" method='post' action="__URL__/insert">
这样的话,当我们提交表单的时候,控制器类就会根据URL的不同的情况去处理表单信息然后返回客户给信息。这样一个表单的提交就完成了。
四:好处 我们知道直接就可以应用Form表单进行提交信息,那么为什么还要使用Ajax来提交呢?原来是因为当我们选择了form表单提交的时候,控制器会处理好的信息用一个空白网页返回给浏览器用户,而后者就是直接在本页中操作,进行操作以后就相当于刷新页面而已,而不要跑到一个空页面去了。当然了,它也有不足之处,就是因为它在本页中操作,那么出于安全考虑就不能进行文件上传功能。所以在选择提交方式的时候根据自己的需求决定。
写了这么多,看看效果吧。。。。。
希望大家指正,共同进步,共同学习。

- 大小: 51.2 KB
分享到:
相关推荐
其中,使用AJAX实现无刷新数据交互是一个关键技术点,本文将详细介绍ThinkPHP5中如何使用AJAX提交表单,并提供相关的实例分析。 首先,要进行AJAX表单提交,我们通常使用jQuery提供的ajax()方法。这个方法可以让...
使用Thinkphp3.2框架,wampserver服务器,ajax提交数据,详情见博客http://blog.csdn.net/welovesunflower/article/details/41963671
它通过Ajax技术,使得用户可以在不刷新页面的情况下提交文件,提高用户体验。ajaxupload.js提供了简单的API,可以方便地与后端服务器进行交互。 在ThinkPHP中结合ajaxupload.js实现图片上传,主要步骤如下: 1. **...
这里我们关注的是一个基于ThinkPHP 3.0版本实现的Ajax评论系统。Ajax,即Asynchronous JavaScript and XML,是一种创建交互式网页应用的技术,允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分网页...
在这段代码中,`handleUrl`是ThinkPHP中的控制器动作,用于处理Ajax请求,`username`和`content`是提交的数据,`function(data)`是回调函数,用于处理服务器返回的数据,最后的`'json'`指定了数据类型为JSON。...
在ThinkPHP中使用Ajax技术需要注意的是,数据提交到服务器后,需要服务器进行相应的验证和处理,然后返回处理结果。前端通过解析返回的JSON数据,对用户界面进行更新。 最后,前端页面中还可以通过JavaScript对用户...
本文实例讲述了thinkphp5 + ajax 使用formdata提交数据...前端jquery ajax提交formdata $.ajax({ }) formdata 获取表单数据 包括文件上传 HTML <form class="am-form" id="recruitinfo"> <d
本篇文章将详细讲解如何在ThinkPHP中使用AJAX接收JSON数据。 首先,我们需要理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。在前后端通信中,...
### ThinkPHP Ajax 实例源代码解析 #### 一、引言 随着Web技术的发展,Ajax技术因其无需重新加载整个页面即可动态更新数据的能力而受到广泛欢迎。ThinkPHP框架作为一个成熟的PHP开发框架,提供了丰富的功能来简化...
// 请求是通过Ajax提交的 } ``` 这段代码检查了`$_SERVER`超全局变量中的`HTTP_X_REQUESTED_WITH`,如果它的值是`XMLHttpRequest`,那么我们可以确定这是一个Ajax请求。在ThinkPHP框架中,可以使用内置的方法来...
- **异步上传**:使用Ajax或WebSocket实现文件的异步上传,提高用户体验。 - **分片上传**:对于大文件,可采用分片上传,提高上传成功率。 - **进度显示**:实时反馈上传进度,提升用户体验。 - **云存储集成**...
在本示例中,我们将探讨如何使用ThinkPHP框架与AJAX技术实现异步上传图片并在页面上显示,以及提供删除图片的功能。ThinkPHP是一个流行的PHP框架,它为开发者提供了便捷的MVC(Model-View-Controller)结构和丰富的...
Thinkphp5.0 中$this->redirect()重定向输出一个页面 和 ajax提交后返回json数据 冲突的 解决方法
ThinkPHP作为PHP语言中流行的开发框架之一,其简洁的设计和强大的功能使得它在快速开发中小型至中型项目中备受青睐。本文将以“ThinkPHP实现ajax仿官网搜索功能实例”为核心,详细讲解如何利用ThinkPHP框架结合ajax...
我们可以使用`form.on('submit', function(data){...})`来监听表单的提交事件,并通过Ajax进行数据交互。 ```html <!DOCTYPE html> 管理员登录 <script src="layui.js"></script> <!-- layui样式 --> ...
主要介绍了TP5(thinkPHP5)框架基于ajax与后台数据交互操作,结合实例形式分析了thinkPHP5前端基于jQuery的ajax数据提交及后台数据接收、处理相关操作技巧,需要的朋友可以参考下