h5 ajax请求get拿到数据_Ajax基本业务实现(GET请求)

本文介绍了如何在H5中通过Ajax实现GET请求,以获取数据。作者汪睦琴分享了客户端和服务端的代码实现,展示了Ajax在基本业务场景中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

b9c00754a6167befc97cea0aa04c56b3.png

作者:汪睦琴

出自:SegmentFault 思否

原文:segmentfault.com/a/1190000023914654


实现效果:

73ac1fd4421f56ece06521e70243c637.png

客户端代码实现:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <!-- html关键表单元素设计    -->
    <h1>The Ajax Page</h1>
    <!-- 该标签的作用是把表单中的相关控件集中起来,形成一个控件组    -->
    <fieldset>
    <!--该标签用于定义fieldset标签控件组下的标题      -->
    <legend>Ajax 表单请求</legend>
    <!-- form标签用于创建供用户输入的html表单,该标签可以包含一个或多个表单元素button    input    keygen    object    output    select    textarea -->
        <form>
        <input type="text" name="name" id="nameId"> 
        <input type="button" onclick="doSave()" value="save">
        </form>
        <span id="result"></span>
    </fieldset>

    <!--添加JS关键业务代码    -->
    <!-- script标签用于定义客户端脚本  script元素既可以包含脚本语句,也可以通过 src 属性指向外部脚本文件。-->
    <script type="text/javascript">
    
   function doCheck(){
    //在此函数中向服务端发起异步请求,检测name是否存在
    //1.基于dom事件创建XHR对象
    var xhr=new XMLHttpRequest();
    //2.设置XHR对象监听状态
    xhr.onreadystatechange=function(){
    //onreadystatechange存储函数,每当readyState属性改变时,就会调用该函数
/*xhr.readyState == 状态 (0,1,2,3,4)
0:请求未初始化,还没有调用 open()。
1:请求已经建立,但是还没有发送,还没有调用 send()。
2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
3:请求在处理中;通常响应中已有部分数据可用了,没有全部完成。
4:响应已完成;您可以获取并使用服务器的响应了。*/
if(xhr.readyState==4&&xhr.status==200){//请求完成并成功返回
document.getElementById("result").innerHTML=xhr.responseText;//获取响应数据
        }
    };
    //3.创建与服务端的连接
    var name=document.forms[0],name.value;
    //console.log("name:",name);
    xhr.open("GET","/doCheck",true);
    //4.发送异步请求实现与服务端的通讯
    xhr.send(null);//get请求send方法传值
} 
    </script>
</body>
</html>

服务端代码实现:

package com.cy.ajaxcontroller;
import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

//这是一个服务端,用来处理客户端的请求
@Controller
@RequestMapping("/")
public class AjaxController {
    private List<String> names=new ArrayList<String>();
    //假如这是存储数据的表
@RequestMapping("doSave")
@ResponseBody 
//将客户端请求的数据name写入到names对应的集合
public String doSave(String name){
    System.out.println("name="+name); 
    names.add(name);  
    return name+"save ok"; 
}
            
@RequestMapping("doCheck")
@ResponseBody 
//通过此方法检验名字是否已经存在 
public String doCheck(String name) {
    if(names.contains(name)) 
        return "名字:"+name+"已经存在,请选择其他名字"; 
        return "名字:"+name+"不存在,可以注册"; 
     }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值