每日一记--Ajax(下)

今天基本将Ajax基础版弄明白,也就是将将学会用吧。

现在说说今天主要学习到了什么?

 

1、Ajax两种请求方式

①get方式,带参数请求。

上篇用的就是带get方式的请求,只是没有带参数而已。

Ajax使用get方式带参数怎么使用呢?

其实也就是拼凑url地址而已。

使用的方式open(method,url,async,user,password)。重点是前两个参数。

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>测试</title>
13     
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">    
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22     
23     <!-- 声明JS代码域 -->
24     <script type="text/javascript">
25         function ajaxReq(){
26             //获取用户请求数据
27             var uname = document.getElementById("uname").value;
28             var data = "name=" + uname;
29             //创建Ajax引擎对象
30             var ajax;
31             if(window.XMLHttpRequest){
32                 ajax=new XMLHttpRequest();
33             }else if(window.ActiveXObject){
34                 ajax=new ActiveXObject("Msxml2.XMLHTTP");
35             }
36             //复写onreadystatement对象
37             ajax.onreadystatechange=function(){
38                 //判断Ajax状态码
39                 if(ajax.readyState==4){
40                     //判断响应状态码
41                     if(ajax.status==200){
42                         //获取相应内容
43                         var result =ajax.responseText;
44                         //处理相应内容
45                         //alert("hahaha");
46                         alert(result);
47                     }
48                 }else{
49                     var showdiv=document.getElementById("showdiv");
50                     showdiv.innerHTML="<img src='img/1.gif' width='200px' height='100px' />";
51                 }
52             }
53             //发送请求
54                 //get 请求实体拼接在URL后面
55                 var str=encodeURI("ajax?" +data);
56                 ajax.open("get",str);
57                 ajax.send(null);
58                 //post
59                 /*ajax.open("post","ajax");
60                 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
61                 ajax.send("name=好啊&pwd=1234");*/
62         }
63     </script>
64     <style type="text/css">
65         #showdiv{
66             border:solid 1px;
67             width:200px;
68             height:100px;
69         }
70     </style>
71 
72 
73 
74   </head>
75   
76   <body>
77           <form action="" enctype="application/x-www-form-urlencoded"></form>
78         <h3>欢迎登录</h3>
79         <hr>
80         <input type="text" name="uname" id ="uname" value=""/>
81         <input type="button" value="测试" onclick="ajaxReq()"/>
82         <div id="showdiv"></div>
83   </body>
84 </html>

这里重点说下:关于ajax的open方式的第二个参数的问题,因为使用get方式发送,应该格外注意编码格式,不然收到的数据会匹配不上造成不必要的麻烦。

url这个参数我特意使用encodeURI()这个方法,由于在使用open的直接方法进行传参时出现后台乱码!!!可能存在的问题是关于传递参数的编码格式问题,而这个encodeURI是不会对 / 进行编译的!!!

 

再说一个问题,通过页面想数据库查询数据的时候,使用SQL语句where查询,传递name等于某值时,在myeclipse后台显示正确的参数值,但是一直在数据库中参数不到!!!

这个原因是因为在向数据库中传递的name需要再一次进行编码转换!!!  在SQL的URL中添加编码格式,比如mysql的URL:"jdbc:mysql://localhost:3306/XX?characterEncoding=utf8",这样查询语句才能被数据库识别。才能查询到结果。

 

②post请求方式

基本差不多知识需要传递post的编码格式让服务器知道是post的数据传递方式。

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>测试</title>
13     
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">    
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22     
23     <!-- 声明JS代码域 -->
24     <script type="text/javascript">
25         function ajaxReq(){
26             //获取用户请求数据
27             var uname = document.getElementById("uname").value;
28             var data = "name=" + uname;
29             //创建Ajax引擎对象
30             var ajax;
31             if(window.XMLHttpRequest){
32                 ajax=new XMLHttpRequest();
33             }else if(window.ActiveXObject){
34                 ajax=new ActiveXObject("Msxml2.XMLHTTP");
35             }
36             //复写onreadystatement对象
37             ajax.onreadystatechange=function(){
38                 //判断Ajax状态码
39                 if(ajax.readyState==4){
40                     //判断响应状态码
41                     if(ajax.status==200){
42                         //获取相应内容
43                         var result =ajax.responseText;
44                         //处理相应内容
45                         //alert("hahaha");
46                         alert(result);
47                     }
48                 }else{
49                     var showdiv=document.getElementById("showdiv");
50                     showdiv.innerHTML="<img src='img/1.gif' width='200px' height='100px' />";
51                 }
52             }
53             //发送请求
54                 //get 请求实体拼接在URL后面
55                 /*var str=encodeURI("ajax?" +data);
56                 ajax.open("get",str);
57                 ajax.send(null);*/
58                 //post
59                 ajax.open("post","ajax");
60                 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
61                 ajax.send("name=好啊&pwd=1234");
62         }
63     </script>
64     <style type="text/css">
65         #showdiv{
66             border:solid 1px;
67             width:200px;
68             height:100px;
69         }
70     </style>
71 
72 
73 
74   </head>
75   
76   <body>
77           <form action="" enctype="application/x-www-form-urlencoded"></form>
78         <h3>欢迎登录</h3>
79         <hr>
80         <input type="text" name="uname" id ="uname" value=""/>
81         <input type="button" value="测试" onclick="ajaxReq()"/>
82         <div id="showdiv"></div>
83   </body>
84 </html>

重点设置ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");以及post的参数在请求体中,所以将参数放在请求体中便好。

 

其中关于使用Ajax通过MVC三层架构进行数据访问以及响应就不细说了,这个重点是关于使用gson编码格式。有个影响吧。

 

今天基本重点学习了Ajax的知识吧,基本会用感觉差不多吧~~~~

 

posted @ 2018-08-21 22:20  风中点球  阅读(127)  评论(0编辑  收藏  举报