【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格式。

相关文章
|
8月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
660 0
|
9月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
397 4
|
9月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
660 0
|
9月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
3151 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
8月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
8月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
672 8
|
8月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
8月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
212 7
|
9月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
560 16
|
9月前
|
SQL Java 数据库连接
区分iBatis与MyBatis:两个Java数据库框架的比较
总结起来:虽然从技术角度看,iBATIS已经停止更新但仍然可用;然而考虑到长期项目健康度及未来可能需求变化情况下MYBATISS无疑会是一个更佳选择因其具备良好生命周期管理机制同时也因为社区力量背书确保问题修复新特征添加速度快捷有效.
775 12