ajax提交表单,java后台验证表单

关于表单的默认行为:https://blog.csdn.net/whd526/article/details/78178451

需阻止表单的默认行为。

ajax中的content-type: https://www.jianshu.com/p/10cdbb35ac87

java springMVC表单验证:https://www.jianshu.com/p/f85c248294f6https://blog.csdn.net/qq_27680317/article/details/79970590

1、表单如下

     说明:当form标签内的button没有设置type=button时,点击按钮表单会有默认行为,即提交给本页面的地址,故添加onclikc="return false"来阻止表单的默认行为,同时提交按钮onclick绑定的事件的函数名不能为sumbit(),否则会触发表单的默认行为,暂且猜测,button按钮上不要出现单独的submit字眼为好。

<form role="form" id="form" οnclick="return false">
    <label>姓名:</label><input type="text" name="username" id="username">
    <label>密码:</label><input type="text" name="password" >
    <label>选项</label>
    <select name="item">
       <option value="option1">option1</option>
        <option value="option2">option2</option>
        <option value="option3">option3</option>
    </select>
    <button type="button" οnclick="submit1()">提交</button>
</form>

 2、获取表单内容的函数

       说明:如果遇上表单内容比较多的情况,可使用下面的这个函数来解决表单内容获取的工作,如果是ajax的请求方式为GET,则ajax的data为 $.param( getFormParams ( ) );如果是POST请求则为 JSON.Stringfy( getFormParams ( ) );

function getFormParams(){
    var params = {};
    $("#form").find("input").each(function () {
        params[$(this).attr("name")] = $(this).val();
    });
    $("#form").find("select").each(function () {
        params[$(this).attr("name")] = $(this).val();
    });
    return params;
}

3、ajax提交表单

     

function submit1() {
    $.ajax({
        url: '/validFrom',
        type: 'GET',
        dataType: 'json',//预期的服务器响应的数据类型。
        data: jQuery.param(getFormParams()),
        //contentType: '', //发送数据到服务器时所使用的内容类型。默认是:"application/x-www-form-urlencoded"。
        //context: '',//为所有 AJAX 相关的回调函数规定 "this" 值。
        //processData: 'true',//布尔值,规定通过请求发送的数据是否转换为查询字符串。默认是 true。
        //scriptCharset: '',//规定请求的字符集。
        //traditional:,//布尔值,规定是否使用参数序列化的传统样式。
        success: function (result, status, xhr) {
            alert(result.msg);
            console.log(result);
            console.log(status);//success
            console.log(xhr);
        },
        error: function (xhr, status, error) {
            alert(xhr.responseText);
            //console.log(status);//paraseeror
            //console.log(error);
        }
    });
}

 

4、后台Controller接收参数并验证

     说明:具体是在javaBean对象的属性上面添加相关注解,除了@NotEmpt还有@NotNULL等等,可以查阅

import javax.validation.constraints包下的验证注解
public class FormContent {

    @NotEmpty(message = "姓名不能为空!")
    private String username;

    @NotEmpty(message = "密码不能为空!")
    private String password;

    @NotEmpty(message = "item不能为空!")
    private String item;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getItem() {
        return item;
    }

    public void setItem(String item) {
        this.item = item;
    }

    @Override
    public String toString() {
        return "FormContent{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", item='" + item + '\'' +
                '}';
    }
}

 

说明:Controller验证时,在接收参数的对象前面添加@Valid注解, 增加参数BindingResult bindingResult,具体使用方法如下

/**
 * 方法返回的值是json字符串或javaBEAN都没有关系,只要有注解@ResponseBody即可
 * @param formContent
 * @param bindingResult
 * @return
 */
@RequestMapping("/validFrom")
@ResponseBody
public String ValidForm(@Valid FormContent formContent, BindingResult bindingResult){

    System.out.println(formContent.toString());
    if(bindingResult.hasErrors()){
        System.out.println(bindingResult.getFieldError().getDefaultMessage());
        //return bindingResult.getFieldError().getDefaultMessage();
        RestResult restResult= new RestResult(0,bindingResult.getFieldError().getDefaultMessage());
        //return restResult;
        return JSON.toJSONString(restResult);
    }else{
        //return new RestResult(1,"请求成功!");
        RestResult restResult = new RestResult(1,"请求成功");
        return JSON.toJSONString(restResult);
    }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用Ajax提交表单数据到后台时,后台可以通过接收到的数据进行相应的处理和响应。处理的过程可以根据具体需求进行设计和实现。 首先,后台需要解析接收到的表单数据。可以通过解析请求的参数,将表单数据提取出来,以便后续处理。常见的方式包括使用后台语言提供的解析工具或框架,如Java的Servlet、Node.js的Express等。 接着,后台可以根据需要对接收到的表单数据进行验证和处理。可以对数据进行格式验证,确保数据符合预期的要求。进行数据处理的方式可以有很多种,如存储到数据库中、调用其他接口进行业务处理等。 处理完数据后,后台可以根据具体情况进行响应。可以返回一个状态码,表示处理的结果,如200表示成功,400表示请求错误等。同时也可以根据需要返回一些数据给前端,如处理结果提示信息、处理后的数据等。响应的方式可以是返回一个JSON对象,也可以是返回一段HTML代码或其他格式的数据。 最后,前端根据接收到的响应结果进行相应的处理和展示。根据后台返回的状态码进行相应的操作,如显示错误提示信息或展示处理后的数据等。 总之,通过Ajax提交表单数据到后台后,后台需要解析、验证、处理数据,并根据处理结果返回相应的响应结果给前端。整个过程的具体实现可以根据具体需求和技术选型进行设计和开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值