关于ajax:Ajax技术进阶提取共性封装特性Get

<!– 客户端代码实现 –>

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <!-- html要害表单元素设计    -->
    <h1>The Ajax 03 Page</h1>
   <!-- 该标签的作用是把表单中的相干控件集中起来,造成一个控件组    -->
    <fieldset>
   <!--该标签用于定义fieldset标签控件组下的题目      -->
    <legend>Ajax 表单申请</legend>
    <form>
        <input type="text" name="name" id="nameId" onblur="doCheck()" onfocus="doClear()">
        <input type="button" onclick="doSave()" value="save">
    </form>
    <span id="result"></span>
    </fieldset>

    <!--增加JS要害业务代码    -->
    <!-- script标签用于定义客户端脚本  script元素既能够蕴含脚本语句,也能够通过 src 属性指向内部脚本文件。-->
    <script type="text/javascript">
    function doClear(){
    document.getElementById("result").innerHTML="";
    } 
    //检测名字是否曾经存在
    //Get办法的个性
    function doCheck(){
    var url="/doCheck";
    var name=document.forms[0].name.value;
    var params="name="+name;
    doAjaxGet(url.params,function(result){
        document.getEmlementById("result").innerHTML=result;
    })
    }
    //在业务办法中利用封装好的代码,保留业务的要害客户端代码剖析及实现
    function doSave(){
    var url="/doSave";
    var params="name="+document.forms[0].name.value;
    //发送申请
    doAjaxGet(url,params,function(result){
        document.getElementById("result").innerHTML=result;
    })
    }  

    //封装共性,提取个性
    //提取get办法的共性进行封装:
    function doAjaxGet(url,params,callback){
    const xhr=new XMLHttpRequest();
    xhr.onreadstatechange=function(){
        if(xhr.onreadyState==4&&xhr.status==200){
            callback(xhr.responseText);
        }
    }
    xhr.open("GET",url+"?"+params,true);
    xhr.send(null);
    } 
    </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+"不存在,能够注册"; 
    }
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理