Web项目中的“后台服务”——ajax

我对ajax的理解:把它当做一个类似于后台服务比较好理解。例如判断文本框是否为空,把文本框的值通过ajax传给“后台服务”并根据返回值来确定执行什么代码


如何使用ajax:

①创建XMLHttpRequest对象(注意浏览器兼容问题):

var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
/*IE游览器*/
var xmlHttp = new XMLHttpRequest();
/*火狐浏览器等*/

②通过open方法创建请求:
open(method,url,asynchronous,user,password);
method为请求类型,get或者post
url为请求的地址,即服务的代码所在位置
asynchronous为是否异步,true为异步,false为同步,可选参数
user为请求的用户名,可选参数
password为请求的密码,可选参数
例如:

xmlHttp.open("GET", "02/server.jsp?username=" + name, true);

③通过onreadystatechange属性(不确定是方法还是属性)设置回调函数,即请求成功后执行的函数:
例如:

xmlHttp.onreadystatechange = validateResult;
/*只写方法名!!!!*/

④通过send方法发送请求:
例如:

xmlHttp.send(null);

实例:判断文本框输入的文字,文本框为空、文本框内容符合要求或者不符合要求,这三种情况做出不同的反应


老规矩看一下项目结构:

这里写图片描述

①ajaxtest.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'ajaxtest.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
<script type="text/javascript">
    var xmlHttp;
    function createXMLHttpRequest() {
        if (window.ActiveXObject)
            //IE游览器
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        else if (window.XMLHttpRequest)
            //火狐游览器
            xmlHttp = new XMLHttpRequest();

    }
    function validateusername() {
        createXMLHttpRequest();
        var name = document.getElementById("username").value;
        /*document.getElementById("");为js中的dom,过几天我会专门就这个写个博客,敬请期待*/
        if (name == "") {
            document.getElementById("result").innerText = "用户名为空";
            /*innerText在IE浏览器可以使用,貌似相当一部分浏览器不能用*/
            return;
        } else {
            document.getElementById("result").innerText = "  ";
            xmlHttp.open("GET", "02/server.jsp?username=" + name, true);
            /*在jsp中url受到basepath的影响*/
            xmlHttp.onreadystatechange = validateResult;
            xmlHttp.send(null);
        }

    }
    function validateResult() {

        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            var re = xmlHttp.responseText;
            /*responseText获得服务返回的文本,responseXml获得服务返回的XML文档*/
            if (re == "1" || re == 1) {
            /*这里的re不确定返回的数据为什么类型,我用IE测试,返回的为整数类型*/
                document.getElementById("result").innerText = "用户名不可用";
            } else {
                document.getElementById("result").innerText = "用户名可用";
            }
        }
    }
    /*
    innerText只能在IE使用,浏览器兼容性
    var的数据类型
     */
</script>
</head>

<body>
    用户名:
    <input type="text" onblur="validateusername()" id="username"
        name="username">
    <label id="result">请输入用户名</label>
</body>
</html>

②server.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    /* 和jsp中的用法差不多 */
    String name = request.getParameter("username");
    if (name.equals("admin")) {
        out.print("1");
    } else {
        out.print("2");
    }
%>

昨天晚上让这个ajax愁了一大会,原来是浏览器不兼容的问题。这是Web项目开发的大问题呀!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值