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 ...
随机推荐
- Android 音视频深入 一 AudioRecord录音生成pcm转换为wav(附源码下载)
本篇项目地址,名字是AudioRecord录音(能暂停,将pch转换为wav),求starhttps://github.com/979451341/Audio-and-video-learning-m ...
- unity中手机触摸代码
#elif UNITY_IOS || UNITY_ANDROID if(Input.touchCount <= 0) { return;/ ...
- ssh三大框架整合
spring+struts2+hibernate 参考1:数据库为oracle http://takeme.iteye.com/blog/1678268 参考2:数据库为mysql http://bl ...
- 怎么搜索sci论文。
进入清华大学图书馆,选择常用数据库,找到 Web of Science平台(SCI/SSCI/AHCI.ISTP/ISSHP.DII.JCR.BP.CCC.CCR/IC.ESI.INSPEC…)即可. ...
- C++基础知识:异常处理
1.C++中的异常处理(1)C++ 中提供了 try和catch语句块对可能产生异常的代码进行分开处理 -try语句块处理正常逻辑 -catch语句块处理异常(2)C++ 语言中通过 throw语 ...
- IEDA中彻底删除项目
删除项目一向比较奇葩,因为当你点击到 该项目名称-->右键 时,并没有 delete 选项,导致我们不知道怎么删除,查找多方文档,得到以下解决: (1)将鼠标移到要删除的 项目名称 上,单击并按 ...
- RocketMq源码学习(一) nameService
public class NamesrvStartup { public static Properties properties = null; public static CommandLine ...
- Alpha冲刺2
前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/9960487.html 作业博客:https://edu.cnblogs.com/campus/ ...
- SDK Manager的使用
前言:SDK Manager就是一个Android软件开发工具包管理器,就像一个桥梁,连通本地和服务器,从服务器下载安卓开发所需工具到本地. 1.在android sdk 安装目录下,有一个SDK M ...
- JavaScript , js 上下文(this 的指代)
上下文 代表 this 变量的值, 以及 它的 指代; 它决定一个函数怎么被调用; 当一个函数作为一个对象的方法被调用的时候, this总是指向 调用这个方法的对象. ----- 1 ,情况一: 字面 ...