ajax简单后台交互-我们到底能走多远系列(28)
我们到底能走多远系列(28)
1,扯淡
单身的生活,大部分时间享受自由,小部分时间忍受寂寞。
生活有时候,其实蛮苦涩,让人难以下咽。那些用岁月积累起来的苦闷,无处宣泄,在自己的脑海里蔓延成一片片荆棘,让你每每想坐下休息的时候刺痛你,让你在睡梦里惊醒,在快乐里落寞,在喜悦中突然感到悲伤。
可是,我们顺利熬到了今天,应该说:我们是那些还没有和生活妥协的人。
2,主题
写页面总会遇到ajax的,用得多了自然熟练了,或会存着源码,要用了copy下就好了。
这里是简单实现一个利用jquery 的ajax方法实现的查询后台信息的功能。
1,页面上的控件:
<tr>
<td align="right"><div align="right"><strong>选择微信:</strong></div></td>
<td align="left">
<input type="text" id="wxName" /> <a href="#" onclick="addWX()" class="button" style="padding: 2px 8px !important;">添加</a>
</td> </tr>
<tr>
<td align="left">
</td>
<td align="left">
<div id="wxDiv">
</div>
</td>
</tr>
页面效果:(看起都不nb的样子)
2,js addWX()方法就是直接ajax调用后台的代码了:
function addWX(){
var wxName = $("#wxName").val();
if(wxName==""){
alert("请输入微信号或名称!");
return;
} $.ajax({
type:"POST",
contentType:"application/json;charset=UTF-8",
url:"../wx/getWXById.json",
data:{wxName:wxName},
dataType:"json",
success:function(result){
if(result.RC == "0"){
alert("所填微信不存在!");
return;
}else{
var wxId = result.wxId;
var wxName = result.wxName;
storeWX(wxId, wxName);
}
}
});
}
解释:使用了POST的方式提交了信息,contentType:"application/json;charset=UTF-8",返回的数据格式是json格式的。
注意:这里使用了success触发回调,如果使用Complete
触发回调,会有result无法很简单的如result.RC这样得到返回信息。result.RC会没有定义的问题。
在回调中的js函数如下:
function storeWX(wxId, wxName){
var storeWXHtml = '<a id="%wxId%" href="#" onclick="removeWX(this.id)" style="padding: 3px 3px !important;">%wxName%</a>';
storeWXHtml = storeWXHtml.replace("%wxId%", wxId).replace("%wxName%", wxName);
$("#wxDiv").append(storeWXHtml);
getwxs();
} function removeWX(wxId){
$("#"+wxId).remove();
getwxs();
}
function getwxs(){
var wxs="";
$("#wxDiv a").each(function(){
wxs = wxs + this.id + "|";
})
wxs = wxs.substring(0,wxs.length - 1);
$("#wxs").val(wxs);
}
可以看到回调中吧查询到的内容展现在页面上,然后将查询的结果存在页面中,继续添加的时候就需要继续保存添加的微信,所以使用“|”分割开的一个字符串来存储多个数据如:123|124|125,存在页面的hidden的input中:
<input id="wxs" type="hidden" value="" name="">
后台查询如果有数据,页面的效果就是:
从storeWX js方法 里看 产生的html,是一个a标签,带了个点击事件,点击 “小道消息”,就可以remove掉他了,remove后需要重新更新存储的wxs。
3,后台
后台的工作很简单,取得查询的条件,去数据库查询一遍,返回结果。
String params = RequestUtil.getContent(request);
params = URLDecoder.decode(params,"UTF-8");//wxName=xxxx
String wxName = params.split("=")[1];
JSONObject result = new JSONObject();
WxDO wx = wxService.getWxByNameOrUserName(wxName);
if(wx == null){ result.put("RC", 0);//没有微信
}else{
result.put("RC", 1);
result.put("wxName", wx.getName());
result.put("wxId", wx.getId());
}
return result;
使用了getContent方法是因为使用了POST方式,所以后台需要从http请求中的body里拿内容,如下:
public static String getContent(HttpServletRequest request) {
StringBuffer buffer = new StringBuffer();
InputStream is = null;
try {
is = request.getInputStream();
String content = ""; BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
while ((content = reader.readLine()) != null) {
buffer.append(content);
} } catch (IOException e) {
logger.error("request.getInputStream failed :", e);
} finally {
if (is != null) {
try {
is.close();
} catch (Exception e) {
// do noting
}
}
} return buffer.toString();
}
注意:拿出来的内容中文是进行了UTF-8转码的,所以需要 URLDecoder.decode(params,"UTF-8") 进行反转回来。
也可以通过使用GET方式,避免中文乱码问题:
1,把js中的POST改成GET
2,后台获取方式修改:
String wxName=request.getParameter("wxName");
jquery也提供了简化版的ajax方法:$post
例子:
$.post("releaseAdvert.html", {ids:ids},
function(data){
alert("发布成功!");
});
让我们继续前行
----------------------------------------------------------------------
努力不一定成功,但不努力肯定不会成功。
共勉。
ajax简单后台交互-我们到底能走多远系列(28)的更多相关文章
- ajax简单后台交互
ajax简单后台交互 1,扯淡 单身的生活,大部分时间享受自由,小部分时间忍受寂寞. 生活有时候,其实蛮苦涩,让人难以下咽.那些用岁月积累起来的苦闷,无处宣泄,在自己的脑海里蔓延成一片片荆棘,让你每每 ...
- node实现http上传文件进度条 -我们到底能走多远系列(37)
我们到底能走多远系列(37) 扯淡: 又到了一年一度的跳槽季,相信你一定准备好了,每每跳槽,总有好多的路让你选,我们的未来也正是这一个个选择机会组合起来的结果,所以尽可能的找出自己想要的是什么再做决定 ...
- html5实现饼图和线图-我们到底能走多远系列(34)
我们到底能走多远系列(34) 扯淡: 送给各位一段话: 人生是一个不断做加法的过程 从赤条条无牵无挂的来 到学会荣辱羞耻 礼仪规范 再到赚取世间的名声 财富 地位 ...
- node模拟http服务器session机制-我们到底能走多远系列(36)
我们到底能走多远系列(36) 扯淡: 年关将至,总是会在一些时间节点上才感觉时光飞逝,在平时浑浑噩噩的岁月里都浪费掉了太多的宝贵.请珍惜! 主题: 我们在编写http请求处理和响应的代码的时 ...
- Bean实例化(Spring源码阅读)-我们到底能走多远系列(33)
我们到底能走多远系列(33) 扯淡: 各位: 命运就算颠沛流离 命运就算曲折离奇 命运就算恐吓着你做人没趣味 别流泪 心酸 更不应舍弃 ... 主题: Spring源码阅读还在继 ...
- 定时任务管理中心(dubbo+spring)-我们到底能走多远系列47
我们到底能走多远系列47 扯淡: 又是一年新年时,不知道上一年你付出了多少,收获了多少呢?也许你正想着老板会发多少奖金,也许你正想着明年去哪家公司投靠. 这个时间点好好整理一下,思考总结一下,的确是个 ...
- ArrayBlockingQueue-我们到底能走多远系列(42)
我们到底能走多远系列(42) 扯淡: 乘着有空,读些juc的源码学习下.后续把juc大致走一边,反正以后肯定要再来. 主题: BlockingQueue 是什么 A java.util.Queue t ...
- ThreadPoolExecutor机制探索-我们到底能走多远系列(41)
我们到底能走多远系列(41) 扯淡: 这一年过的不匆忙,也颇多感受,成长的路上难免弯路,这个世界上没人关心你有没有变强,只有自己时刻提醒自己,不要忘记最初出发的原因. 其实这个世界上比我们聪明的人无数 ...
- Spring mvc源码url路由-我们到底能走多远系列(38)
我们到底能走多远系列38 扯淡: 马航的事,挺震惊的.还是多多珍惜身边的人吧. 主题: Spring mvc 作为表现层的框架,整个流程是比较好理解的,毕竟我们做web开发的,最早也经常接触的就是一个 ...
随机推荐
- adMob iAd整合,随机根据网络状况自动显示。
最近找整合的代码,找到的都不对,有个大概对的,但要奔溃退出,只要两个单独弄. adMob 下载好sdk,导入进去,iAd的加入iad framework. 使用方法,在viewController v ...
- TaskTracker启动过程源码级分析
TaskTracker也是作为一个单独的JVM来运行的,其main函数就是TaskTracker的入口函数,当运行start-all.sh时,脚本就是通过SSH运行该函数来启动TaskTracker的 ...
- CentOS下编译安装MySQL 5.6.21
一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake:http://www.cnblog ...
- NOIP 2003解题报告
第一题(神经网络): 题目大意,给出一些点,每个点都有2个值,c和u,给出一些有向边,权值为w.入度为0的点的c已知,其它点的c未知,每个入度不为0的点node的c等于sum(c[k]*w[k][no ...
- libpng交叉编译安装
tar xzf libpng-1.5.22.tar.gz cd libpng-1.5.22 mkdir tmp 打开Makefile文件并修改CC=arm-linux-gcc ./configure ...
- android自定义控件实例(Linearlayout组合TextView和ImageView)
2013-12-18 11:25:22 转载自: http://www.open-open.com/lib/view/open1328836804515.html 很多时候android常用的控件不能 ...
- Python中的sorted函数以及operator.itemgetter函数 【转载】
operator.itemgetter函数operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. a = [1,2 ...
- Spring学习笔记之bean配置
1.命名bean 每个bean都有一个或者多个的的标识符.这些标识符必须在加载他们的容器里边唯一.一个bean经常有且只有一个标识符,但是如果需要超过一个的名字,可以考虑额外的别名. 基于xml的配置 ...
- protected 和default的区别
default:包内可见,包外不可见 protected:包内可见,包外不可见,但是包外继承之后可见.
- ios 检测应用程序升级问题
app 上其实已经有自动检测我们版本的功能. 其实我也觉得对于一个程序员来说检测功能让,系统来维护更合适和合理.开发者只要告诉苹果即可. 然而今天老大非要实现自己版本更新的问题,因此也查找了相关的资 ...