ajax简单后台交互

来源:互联网 发布:ubuntu的root默认密码 编辑:程序博客网 时间:2024/04/30 12:04

我们到底能走多远系列(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("发布成功!");            });

 

让我们继续前行

----------------------------------------------------------------------

努力不一定成功,但不努力肯定不会成功。
共勉。

 

 


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 安卓平板闪退怎么办 剑侠世界2出了1怎么办 苹果手机有木马病毒删除不了怎么办 苹果手机病毒了怎么办【解决方法】 苹果手机点击病毒链接怎么办 苹果手机有病毒啦怎么办 苹果7p反复重启怎么办 苹果手机屏幕触屏不灵怎么办 苹果手机屏翘起来了怎么办 苹果x手机触屏失灵怎么办 苹果7手机变成黑白屏怎么办 苹果手机屏不动了怎么办 苹果6老是卡屏怎么办 苹果x卡屏死机怎么办 苹果6死机卡屏怎么办 苹果手机主屏死机怎么办 苹果7手机卡屏死机怎么办 苹果6s卡死了怎么办 6s手机显示丢失锁定怎么办 酷比s9被root怎么办 垃圾清理把相片删除了怎么办 小米电脑怎么下载软件怎么办 华为手机pin码忘了怎么办 锁屏密码忘了怎么办 抖音停止运行了怎么办? 华为手机右下角有个小人怎么办 华为手机程序停止运行怎么办 华为手机不支持软件搬家怎么办 红米手机没有任务键怎么办 进网许可丢了怎么办 华为稳私空间被稳蔵怎么办 华为手机安装不了软件怎么办 华为手机自动安装软件怎么办 手机在实体店买贵了怎么办 日本买的kindle坏了怎么办 华为麦芒4屏幕失灵怎么办 华为麦芒6屏幕失灵怎么办 手机为什么总显示内存不足怎么办 小米云服务满了怎么办 魅蓝s6声音小怎么办 华为畅享7s丢失怎么办