写个例子,以备后用
一、JavaScript 解析返回的xml格式的数据:
1、javascript版本的ajax发送请求
(1)、创建XMLHttpRequest对象,这个对象就是ajax请求的核心,是ajax请求和响应的信息载体,单是不同浏览器创建方式不同
(2)、请求路径
(3)、使用open方法绑定发送请求
(4)、使用send() 方法发送请求
(5)、获取服务器返回的字符串 xmlhttpRequest.responseText;
(6)、获取服务端返回的值,以xml对象的形式存储 xmlhttpRequest.responseXML;
(7)、使用W3C DOM节点树方法和属性对该XML文档对象进行检查和解析。
2、 实例:
(1)、发送ajax请求,以及解析返回的数据
(2)、servlet 接受ajax 请求:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String aaa= request.getParameter("aa");
System.out.print("ajax 数据:"+aaa);
// 向客户端响应信息
response.setCharacterEncoding("GBK");
response.setContentType("text/xml");
PrintWriter out= response.getWriter();
out.print("");
out.println("
out.println("
out.println("
out.println("
out.println("
out.println("
out.println("
out.println("
out.println("
out.println("
out.println("
out.println("
out.println("
out.println("
}
二、JavaScript 解析返回的json格式的数据:注意这里获取的是responseText 而不是responseXML也就是字符串而不是xml对象,因为返回的是json
1、发送请求,并解析返回的json格式的数据(这里返回的是json 对象的格式)
2、servlet 接受请求,并返回数据
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 向ajax 返回json格式的数据
String aaa= request.getParameter("aa");
System.out.print("ajax 数据:"+aaa);
// 向客户端响应信息
response.setCharacterEncoding("GBK");
response.setContentType("text/json");
PrintWriter out= response.getWriter();
// 这里组装json对象的格式,并转化为json格式的字符串返回。
String stu="{age:12,age1:23,age2:33}";
out.print(stu);
out.flush();
out.close();
}
三、JavaScript 解析返回的json数组格式的数据:
1、发送ajax请求
四、ajax XMLHttpRequest 对象的三个属性以及open 和send方法:
(1)onreadystatechange 属性
onreadystatechange 属性存有处理服务器响应的函数。下面的代码定义一个空的函数,可同时对 onreadystatechange 属性进行设置:
xmlHttp.onreadystatechange=function()
{
// 我们需要在这里写一些代码
}
(2)readyState 属性
readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。
这是 readyState 属性可能的值:
状态 描述
0 请求未初始化(在调用 open() 之前)
1 请求已提出(调用 send() 之前)
2 请求已发送(这里通常可以从响应得到内容头部)
3 请求处理中(响应中通常有部分数据可用,但是服务器还没有完成响应)
4 请求已完成(可以访问服务器响应并使用它)
我们要向这个 onreadystatechange 函数添加一条 If 语句,来测试我们的响应是否已完成(意味着可获得数据):
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
// 从服务器的response获得数据
}
}
(3)responseText 属性
可以通过 responseText 属性来取回由服务器返回的数据。
在我们的代码中,我们将把时间文本框的值设置为等于 responseText:
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.myForm.time.value=xmlHttp.responseText;
}
}
另外:
AJAX - 向服务器发送一个请求
要想把请求发送到服务器,我们就需要使用 open() 方法和 send() 方法。
open() 方法需要三个参数:
第一个参数定义发送请求所使用的方法(GET 还是 POST)。
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
第二个参数规定服务器端脚本的 URL(该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务))。
第三个参数规定应当对请求进行异步地处理(true(异步)或 false(同步))。
send() 方法可将请求送往服务器。如果我们假设 HTML 文件和 ASP 文件位于相同的目录,那么代码是这样的:
xmlHttp.open("GET","time.asp",true);
xmlHttp.send(null);
2、发送ajax请求并解析
3、servlet返回的数据
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
// 向ajax 返回json格式的数据
String aaa = request.getParameter("aa");
System.out.print("ajax 数据:" + aaa);
// 向客户端响应信息
response.setCharacterEncoding("GBK");
response.setContentType("text/json");
PrintWriter out = response.getWriter();
// 这里使用 json 数组的格式
String stu = "[{age:12,age1:23,age2:33}]";
out.print(stu);
out.flush();
out.close();
}