前后端交互之使用ajax方法实现form表单的提交

转载于:使用ajax方法实现form表单的提交 - 程序员十三 - 博客园 (cnblogs.com)

 οnsubmit=“reutrn false”:表示禁止表单提交。

data: $('#addTaskform').serialize(),序列化提交表单数据。

不要忘记引用js文件

<script  type="text/javascript" src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js">
  </script>

一、使用form提交数据

1.前后端完全分离,单独测试后端,可以直接使用form提交。

 form表单提交,主要action标明跳转的地址,type的类型要是submit。

此种方法是交给后端处理数据传递成功后页面的跳转。

 前端代码

<form  action="/addMergeTask" method="get">
    任务名称:<input type="text" name="taskName" /><br>
    源数据库连接名:<input type="text" name="srcLink" /><br>
    目标数据库连接名:<input type="text" name="tarLink" /><br>
    源数据表:<input type="text" name="srcTable" /><br>
    目标数据表:<input type="text" name="tarTable" /><br>
    <input type="submit" value="提交">
</form>

后端代码

 @RequestMapping(path = "/addMergeTask",method = RequestMethod.GET)
    @ResponseBody
    public Result<Integer,Object> addmergeTask(@RequestParam("taskName") String taskName,@RequestParam("srcLink") String srcLink,@RequestParam("tarLink") String tarLink,@RequestParam("srcTable") String srcTable,@RequestParam("tarTable") String tarTable){
        boolean res= mergeTaskService.addmergeTask(taskName,srcLink,tarLink,srcTable,tarTable);
        int status=res? RequestResCodeConst.SUCCESS:RequestResCodeConst.FAILURE;
        String message=res?"发布成功":"发布失败";
        return new Result<>(status,message);
    }

二、使用ajax提交数据,前端实现页面跳转

  • 在常用方式中,点击的登录按钮的type为"submit"类型,此处为button类型
  • 在常用方式中,form的action不为空,此处为空
  • ajax方式中需要注意的是$.ajax方法中的参数:dataType和data。
  • data可以使用.serialize序列化提交

 呈现效果

前端代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script  type="text/javascript" src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js">
</script>
  <script type="text/javascript">
         function login(){
            $.ajax({
            //几个参数需要注意一下
                dataType: "json",
                url: "http://localhost:8080/addLink" ,
                data: $('#form1').serialize(),
                success: function (result) {
                    console.log(result);//打印服务端返回的数据(调试用)
                    if (result.status == 200) {
                        alert(result.message);
                    }
                },
                error : function() {
                    alert("异常!");
                }
            });
        }
    </script>
</head>
<body>

<div id="form-div">
  <form id="form1" onsubmit="return false" action="##" >
    连接名:<input type="text" name="linkName" /><br>
    IP地址:<input type="text" name="linkAdd" /><br>
    数据库类型:<input type="text" name="linkType" /><br>
    端口号:<input type="text" name="portName" /><br>
    用户名:<input type="text" name="userName" /><br>
    密码:<input type="password" name="psw" /> <br>
    数据库:<input type="text" name="dataBaseName" /> <br>
    <input type="button" value="提交" onclick="login()">
  </form>
</div>

</body>
</html>

 后端代码

 @RequestMapping(path="/addLink",method = RequestMethod.GET)
    @ResponseBody
    public Result<Integer,Object> addLink(@RequestParam("linkName") String linkName,@RequestParam("linkAdd") String linkAdd, @RequestParam("linkType") String linkType, @RequestParam("portName") String portName, @RequestParam("userName") String userName, @RequestParam("psw") String psw,@RequestParam("dataBaseName") String dataBaseName){
        boolean res= dataBaseService.addLink(linkName,linkAdd,linkType,portName,userName,psw,dataBaseName);
        int status=res? RequestResCodeConst.SUCCESS:RequestResCodeConst.FAILURE;
        String message=res?"发布成功":"发布失败";
        return new Result(status,message);
    }

使用ajax提交form表单可以实现不刷新页面的数据交互,而ajax文件上传则可以实现异步上传文件。 首先,需要在前端页面中引入jquery库和jquery.form插件。 然后,通过jquery的ajax方法提交表单数据,代码如下: ```javascript $(document).ready(function(){ $('#submitForm').click(function(){ var formData = new FormData($('#myForm')[0]); $.ajax({ url: 'submit.php', // 提交的url地址 type: 'POST', // 提交方式 data: formData, dataType: 'json', // 返回值类型 cache: false, // 是否缓存 processData: false, // 是否处理数据 contentType: false, // 是否设置内容类型 success: function(data){ // 成功回调函数 }, error: function(){ // 失败回调函数 } }); return false; }); }); ``` 其中,`#submitForm`为提交按钮的id,`#myForm`为表单的id,`submit.php`为后台处理程序的url地址。 对于文件上传,需要将`processData`和`contentType`设置为`false`,并使用`FormData`对象来传递表单数据,如下所示: ```javascript $(document).ready(function(){ $('#submitForm').click(function(){ var formData = new FormData($('#myForm')[0]); $.ajax({ url: 'submit.php', // 提交的url地址 type: 'POST', // 提交方式 data: formData, dataType: 'json', // 返回值类型 cache: false, // 是否缓存 processData: false, // 是否处理数据 contentType: false, // 是否设置内容类型 success: function(data){ // 成功回调函数 }, error: function(){ // 失败回调函数 } }); return false; }); }); ``` 后台处理程序可以通过`$_FILES`变量来获取上传的文件信息。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值