Thinkphp,Jquery,Ajax异步发布
1、在提交表单的HTML页面的<head>中定义一个变量供Jquery使用
<script type='text/javascript'>
var handleUrl='<{:U("Index/Index/handle","","")}>';
</script>
创 建一个handleUrl变量供index.js(这个是引入的Jquery文件)使用;因为引用的js文件中无法使用模版语法<{}>来得 到提交数据的地址,所以就在这里定义一个变量来获取js需要提交给PHP处理数据的方法的地址;注意U方法中必须写入完整的"应用名/控制器名/方法名" 这样的路径,后面两个参数为空表示伪静态后缀为空,这样得到的地址才是正确的
2、在引入的js文件中使用$.post()进行AJAX异步处理
//点击按钮提交
$('#send-btn').click(function () {
//判断用户名,内容是否为空
var username=$('input[name=username]');
var content=$('textarea[name=content]');
if (username.val()=='') {
alert('用户名不能为空');
username.focus();
return; //return的作用是跳出本函数
}
if (content.val()=='') {
alert('内容不能为空');
content.focus();
return;
}
//AJAX异步发布,使用$.post();第一个参数是PHP端接收处理这个异步发布的内容的方法;第二个参数是发送过去的数据,使用json格式; 第三个参数是回调函数,用于处理PHP返回的数据;第四个参数指定接收PHP返回数据的格式,通常用json格式
$.post(handleUrl,{"username":username.val(),"content":content.val()},function (data) { //data是PHP返回的数组名
if (data.status) { //这里开始处理PHP返回的数据;通过PHP返回的data数组中的status来判断PHP端操作是否成功
var str='<dl class="paper a1">';
str+='<dt><span class="username">'+data.username+'</span>';
str+='<span class="num">No.'+data.id+'</span>';
str+='</dt><dd class="content">'+data.content+'</dd>';
str+='<dd class="bottom">';
str+='<span class="time">'+data.time+'</span>';
str+='<a href="" class="close"></a></dd></dl>';
$("#main").append(str);
$("#close").click();
}else {
alert("发布失败");
}
},'json')
}
3、PHP中处理Jquery通过ajax发送过来的数据
//异步发布处理
public function handle(){ //这个方法就是handleUrl='<{:U("Index/Index/handle","","")}>';
if(!IS_AJAX){ //判断是否通过ajax异步处理,防止直接在浏览器输入路径访问
halt('页面不存在'); //halt()输出错误页面,配置文件中配置了错误页面路径;也可以使用_404()
}
//开始对Jquery发送过来的数据进行处理
// Jquery是使用$.post异步提交的,所以用$_POST接收Jquery发送过来的数据
$data=array("username"=>$_POST['username'],"content"=>htmlspecialchars($_POST['content']),"time"=>time()); //注意这里使用htmlspecialchars()对内容进行过滤,防止js的运行
if($id=M('wish')->data($data)->add()){ //插入数据成功则取出数据返回给页面
$data['id']=$id;
$data['content']=replace_phiz($data['content']); //调用自定义函数将发布内容中的表情替换为可用的字符串形式
$data['time']=date('Y-m-d H:i',$data['time']); //将发布日期替换为格式化后的日期
$data['status']=1; //返回一个状态码1来表示插入数据库成功;Jquery端将用这个来判断这边的操作是否成功
$this->ajaxReturn($data,'json');//调用TP的ajaxReturn()返回数据;第一个参数是一个数组;第二个参数指定返回数据的形式,通常使用json格式,会自动将那个数组转化为json格式
}else{
$this->ajaxReturn(array('status'=>0),'json'); //插入数据库失败则返回状态0
}
}
注:form表单中的action不用写提交后台的地址,留空就行,因为数据都是通过Jquery发送的,甚至不用form表单也行,只要有input输入数据,Jquery就能通过input的name值获取数据。
Thinkphp,Jquery,Ajax异步发布的更多相关文章
- thinkphp+jquery+ajax前后端交互注册验证
thinkphp+jquery+ajax前后端交互注册验证,界面如下 register.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. ...
- Jquery Ajax 异步设置Table中某列的值
可根据table中某列中的ID去改变某列的值! 只是参考,实际应用中不能这样做的,如果有很多行,频繁访问服务器,服务器是顶不住的! JS: $(document).ready(function () ...
- 使用 jQuery Ajax 异步登录,并验证用户输入信息(maven)
使用 jQuery Ajax 异步登录,并验证用户输入信息(maven) 本篇内容: (1)上一篇是使用同步的请求实现登录,并由 Servlet 决定登陆后下一步做哪些事情,本篇使用 jQuery A ...
- jquery Ajax异步请求之session
写了一个脚本,如下: $(function () { $("#btnVcode").click(function () { var receiveMobile = $(" ...
- jQuery Ajax(异步请求)
jQuery异步请求 原始的异步请求是需要创建的 XMLHttpRequest 对象.(IE5,6不支持)目前很多浏览器都支持XMLHttpRequest对象 jQuery ajax常用的回调函数:b ...
- jquery ajax异步调用
写程序的第一步都要知其然,至于知其所以然就要看个人的爱好了.下面说一下web开发中经常用的ajax. 这里是用的jquery框架实现的ajax异步调用.废话少说先上代码.(asp.net开发) var ...
- jquery.ajax异步发送请求的简单测试
使用ajax异步发送请求到一般处理程序,判断输入的用户名和密码 1.添加Html页面,导入jquery 2.编写js代码和页面标签 <script type="text/javascr ...
- Jquery ajax异步传值的两个实用的方法,你看后肯定会用第二个
故名思议,你是个asp.net 或者是搞PHP的或者 是javaweb的 ,但是为了提高界面的效率,你必须会实用jquery的ajax,当然,在ajax异步传值的时候很头疼的一件事情就是,拼接字符串 ...
- JQuery $.ajax(); 异步访问完整参数
$.ajax 完整参数 jquery中的ajax方法参数 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post ...
随机推荐
- day18-python的正则表达式
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
- jenkins部署web项目到tomcat(五)
(1)maven构建web项目 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...
- MFC 中GetClientRect、ClientToScreen、GetWindow、RectScreenToClient的使用
CWnd* pWnd = GetDlgItem(IDB_BUT_RECOGNIZE); pWnd->GetClientRect(&rect); //指该控件自身客户区的矩形,原点为控 ...
- Comparable和Comparator接口是干什么的?列出它们的区别。
Comparable和Comparator接口是干什么的?列出它们的区别. Java提供了只包含一个compareTo()方法的Comparable接口.这个方法可以个给两个对象排序.具体来说,它返回 ...
- FPGA复位的可靠性(转)
FPGA复位的可靠性(同步复位和异步复位) reference:http://www.eetop.cn/blog/html/17/743817-24442.html 一.特点: 同步复位:顾名思义, ...
- findbugs 安装及使用
1.eclipse安装findbugs插件 Help -> install new softWare 输入 http://findbugs.cs.umd.edu/eclipse 2.使用find ...
- git创建版本库 小白操作 (看图)
1.什么都没记住,各种试 pwd --查看当前路径 cd /e --进入E盘 mkdir test --在E盘下创建test空文件夹 git init -- 初始化,编程git可以管理的 ...
- JavaScript和它父亲的故事
附赠脱单秘籍:了解一些JavaScript的历史,聊天的时候说不好可以获得更多程序员小妹子的崇拜的哟~ ๑乛◡乛๑~ 阅读本文可以让你更好的理解什么是ECMAScript. 本次文章内容来自:< ...
- L300 3月英语课下
重音 句中的实词(内容词)要被重读,读得重.长一点.句中的虚词(功能词)要被轻读或弱读,读得轻.短一点口语交流中,当虚词的在句中起到重要的表意作用时,会被重读. 连读 连读:把一个单词的尾音同下一个单 ...
- L260
Innovative UK technology that can deliver drugs deep into the brain to treat neurological diseases, ...