【Java框架型项目从入门到装逼】第六节 - 用ajax请求后台数据

简介: 【Java框架型项目从入门到装逼】第六节 - 用ajax请求后台数据

这一节我们来说一下如何用ajax提交请求?

我们先不讲ajax的原理,还是先以实战为主,看一下这个东西到底怎么用的?

form表单

<!-- 采用post表单提交 -->
  <form style="margin-left:200px;" id="myform" name="myform" method="post" onsubmit="return sumbitTest();"   
        action="login.do">  
      <table>  
          <tr>  
              <td>用户名:</td>  
              <td> <input type="text" name="username" id="username"/> </td>  
          </tr>  
          <tr>  
              <td>密码:</td>  
              <td> <input type="password" name="password" id="password"/> </td>  
          </tr>  
          <tr>  
              <td colspan="2">  
                  <input style="display:none" id="login_btn" type="submit" value="提交">  
              </td>  
          </tr>  
          <div id="errMsg" style="color:red">${errMsg}</div>
          <input id="loginType" type="text" name="loginType" hidden='true'/> </td>
      </table>  
  </form>  


修改提交方法:

         function doLogin(type){
      if(type == 'QQ'){
        alert('您选择的是QQ登录');
      }
      if(type == 'weixin'){
        alert('您选择的是微信登录');
      }
      $("#loginType").val(type);
      //$("#login_btn").click();
      //如果验证通过,就开始进行提交 
      if(sumbitTest()){
         $.ajax({
                 type: "GET",
                 url: "login.do",
                 data: {username:$("#username").val(), password:$("#password").val()},
                 dataType: "json", //预期服务器返回的数据
                 success: function(data){
                      if(data.errCode < 0){
                        $("#errMsg").show().html(data.errMsg).stop(true,true).fadeOut(3000);
                      }else{
                        //登录成功,做其他处理
                        alert("恭喜你,登录成功!") 
                      }
                          }
             });
      }
    }
    //验证登录信息 
    function sumbitTest(){
      return true;
      //在这个方法中可以对登录信息进行校验 (作业,用户名和密码都不能为空) 
      if(!$("#username").val()){
        alert("用户名不能为空!");
        return false;
      }
      if(!$("#password").val()){
        alert("密码不能为空!");
        return false; 
      }
    }


ajax是异步操作,和同步操作的form表单提交不同。

例子一:同步就是打电话,对方不接就一直等。异步就是发微信,对方回不回我都可以去做别的事情。


例子二:同步就像玩RPG回合制游戏,比如口袋妖怪,你打我一下,我打你一下。异步就像玩红色警戒,我可以先派20辆天启坦克去轰炸对面的兵工厂,下完指令后还可以立刻回到主基地造一座雷达。

OK,刚才我们看到ajax提交有一个属性是text,这就表示返回的数据格式是文本。实际上,我们一般用的数据格式并非text,而是JSON。我们需要在Servlet中手动给我们的JSP页面返回一个json数据。

WebUtil.writeObject(resp, JSONObject.fromObject(resultData) );

其中,resultData是一个包含错误码和错误信息的专用类:

public class ResultData {
  private int errCode = 0;
  private String errMsg;
  public int getErrCode() {
    return errCode;
  }
  public void setErrCode(int errCode) {
    this.errCode = errCode;
  }
  public String getErrMsg() {
    return errMsg;
  }
  public void setErrMsg(String errMsg) {
    this.errMsg = errMsg;
  }
}

因为最终转换的时候肯定默认调用resultData对象的toString方法,所以我们不妨直接重写ResultData类的toString方法,返回JSON格式。

相关文章
|
11月前
|
设计模式 Java Spring
Java 设计模式之责任链模式:优雅处理请求的艺术
责任链模式通过构建处理者链,使请求沿链传递直至被处理,实现发送者与接收者的解耦。适用于审批流程、日志处理等多级处理场景,提升系统灵活性与可扩展性。
1072 2
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
469 4
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
675 16
|
传感器 分布式计算 安全
Java 大视界 -- Java 大数据在智能安防入侵检测系统中的多源数据融合与分析技术(171)
本文围绕 Java 大数据在智能安防入侵检测系统中的应用展开,剖析系统现状与挑战,阐释多源数据融合及分析技术,结合案例与代码给出实操方案,提升入侵检测效能。
|
XML 前端开发 JavaScript
什么是Ajax和jquery
什么是Ajax和jquery
295 0
|
JSON 前端开发 Java
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
784 0
|
敏捷开发 JavaScript 前端开发
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤