我的第一个网站——MISDream(三):jquery的ajax使用

许多情况下,通过form提交表单是满足不了需求的,因此需要使用ajax进行异步提交,所谓异步通信,就是告诉服务器你的消息的起点和终点,服务器通过起点和终点来识别待处理的信息,然后通过回调函数告诉你他接受到了,异步处理的时候是第二个线程,对主线程不造成影响;同步通信则是双发一直处于准备状态,时时刻刻准备接受你的请求,处理请求的时候其他代码是无法继续运行下去的。

使用原生js的ajax有些麻烦,因此这里使用的是jquery自带的ajax方法。

首先在jsp文件中创建一个表单,这里要注意,由于我们想通过ajax提交表单,因此

  1. 可以使用div代替form标签,form标签的method和action参数也不用写了
  2. 提交按钮的类型千万不能写成"submit",只要button即可,否则他还是会自动提交这个表单,由于没有为他指定action参数因此页面会刷新
<form>
    <input type="text"></input>
    <input type="button" value="提交"></input>
</form>

随后我们在js中为提交按钮绑定事件,并在其中写上ajax函数,ajax函数里面需要指定若干个参数

async:默认为true,表示异步,如果需要同步处理,设为false即可

type:默认为get,使用post方法似乎传递不了(不清楚原因)

url:处理数据的action,使用${pageContext.request.contextPath}/可以定位到项目的根目录

data:需要传输的数据,用键值对的方式书写即可

datatype:返回的数据格式,一般为json格式

success:成功回调函数,如果action接收到了数据则会进入success的回调函数,该函数的参数是返回的json数据,可以使用参数.名称来获取数据,这里用data来接受json,然后用data.result获取返回的结果值,result是action中的成员变量

error:传输错误时的回调函数,参数说明略

$.ajax({
            type: "get",
            url: "${pageContext.request.contextPath}/commentaction.action",
            data: {
                doubanid: doubanid,
                commenter: username,
                commenttime: date,
                commentcontent: commentcontent
            },
            dataType: "json",
            success: function (data) {
                if (data.result == "success") {
                    alert("评论成功!");
                } else {
                    alert("评论失败!");
                }

            },
            error: function () {
                alert("评论失败!");
            }
        })

那么处理ajax传输的数据的action该怎么写呢?

只需要创建与ajax的data中键名一样的成员变量并生成其set和get方法即可

public class CommentAction extends ActionSupport {
    private String doubanid;
    private String commenter;
    private String commenttime;
    private String commentcontent;
    private String result;
    @Override
    public String execute() throws Exception {
        Dbconnection dbconn=new Dbconnection();
        Connection conn=dbconn.connect();
        if(conn==null) {
            System.out.println("连接失败");
        }else {
            System.out.println("连接成功");
        }
        Comment com=new Comment();
        if(com.comment(conn,doubanid,commenter,commenttime,commentcontent)==true){
            result="success";
        }else{
            result="error";
        }
        return SUCCESS;
    }

    public String getDoubanid() {
        return doubanid;
    }

    public void setDoubanid(String doubanid) {
        this.doubanid = doubanid;
    }

    public String getCommenter() {
        return commenter;
    }

    public void setCommenter(String commenter) {
        this.commenter = commenter;
    }

   ...其他set和get省略
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值