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 ...
随机推荐
- learning at command AT+CSQ
AT command AT+CSQ [Purpose] Learning how to get mobile module single quality report [Eeviro ...
- 枚举,Math和Random
1.实用类: 01.枚举 enum Student stu=new Student(); 我们为了保证用户一个健康的输入! 我们使用了封装特性! 用户就不能直接访问我们的属性了!! private c ...
- Linux十字病毒查杀处理
之前处理过一次十字病毒,但未好好整理处理过程,现在转载一篇来自51cto的文章. 转自:http://blog.51cto.com/ixdba/2163018 十字符病毒,杀不死的小强,一次云服务器沦 ...
- jquery 操作table样式拖动参考
参考: http://blog.csdn.net/kdiller/article/details/6059727 http://www.jb51.net/article/59795.htm
- [Leetcode221]最大面积 Maximal Square
[题目] Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 1's a ...
- ROS tab键补全操作出现错误
ros tab键补全操作出现错误如下: $ roslaunch sp[rospack] Warning: error while crawling /home/hemudu: boost::files ...
- 究竟 javascript 错误处理有哪些类型?
有时候,在自己封装的工具函数中,不传参或传入了错误类型的参数,也要适当的抛出一些错误以示警告:使用框架不正常情况下也会抛出错误,如果对错误一无所知,便无从下手调试.综合上述,了解错误的处理机制是多么必 ...
- TensorFlow函数:tf.lin_space
函数:tf.lin_space 别名: tf.lin_space tf.linspace lin_space( start, stop, num, name=None ) 参见指南:生成常量,序列和随 ...
- 『转』credential Provider 简易改写攻略
本次小学期的题目是windows下的凭证改编.本人负责的是Win7 下的credentials Provider 的编写以及其他杂七杂八的工作.当然给我印象最深的就是credentials provi ...
- centos下mysql数据迁移方法
第一种: 原始数据库不需要重新安装: 默认mysql会安装在/var/lib/mysql这里,若将数据迁移到/data/mysql目录下,步骤如下: 1.停止mysql服务 2.#cp /var/li ...