使用ajax发起请求时候,响应的数据类型由ajax设置的接受数据方式决定:
responseText决定响应的数据类型是文本;
responseXML决定响应的数据类型xml文档。
以Servlet为例,当返回xml文档时候,Servlet一定要设置response.setContentType("text/xml;charset=utf-8")。根据是否需要缓存,可以设置response.setHeader("Cache-control","no-cache");
响应数据的格式由HTTP响应报文的Content-Type决定:
text/xml xml
text/html html
text/plain 文本
application/json json
下面是Servlet返回文本、xml文档、json、html的代码:
index.jsp
- <%@page@H_502_68@language="java"@H_502_68@contentType="text/html;charset=UTF-8"
- @H_502_68@pageEncoding="UTF-8"%>
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
- <htmlheadMeta@H_502_68@http-equiv="Content-Type"@H_502_68@content="text/html;charset=UTF-8"title>Inserttitlehere</script@H_502_68@type="text/javascript"
- functiongetXMLHttpRequest(){
- varxmlReq;
- if(window.XMLHttpRequest){//codeforIE7+,Firefox,Chrome,Opera,Safari
- @H_502_68@xmlReq=newXMLHttpRequest();
- }else{//codeforIE6,IE5
- newActiveXObject("Microsoft.XMLHTTP");
- }
- returnxmlReq;
- //返回文本数据测试
- functionajaxText(){
- var@H_502_68@oReq=getXMLHttpRequest();
- oReq.open("POST","TextServlet",true);
- oReq.setRequestHeader("Content-type",
- "application/x-www-form-urlencoded");//提交表单必须
- oReq.send("@H_502_68@name=我是文本&@H_502_68@pwd=123");
- @H_502_68@oReq.onreadystatechange=function(){
- if(@H_502_68@oReq.readyState==4&&@H_502_68@oReq.status==200){
- document.getElementById("myDiv")@H_502_68@.innerHTML=oReq.responseText;//responseText响应类型是文本
- }
- //返回XML文档测试
- functionajaxXML(){
- oReq.send("@H_502_68@name=我是xml&@H_502_68@pwd=111");
- var@H_502_68@xmlObj=oReq.responseXML;//responseXML响应类型是XML文档
- var@H_502_68@names=xmlObj.documentElement.getElementsByTagName("name");
- var@H_502_68@name=names[0].firstChild.nodeValue;
- var@H_502_68@pwds=xmlObj.documentElement.getElementsByTagName("pwd");
- var@H_502_68@pwd=pwds[0].firstChild.nodeValue;
- name+","+pwd;
- //返回json文档测试
- functionajaxJSON(){
- oReq.send("@H_502_68@name=我是json&@H_502_68@pwd=var@H_502_68@resObj=oReq.responseText;//json字符串用文本形式接收
- var@H_502_68@jsonObj1=eval('('+resObj+')');
- var@H_502_68@name1=jsonObj1.name;
- var@H_502_68@pwd1=jsonObj1.pwd;
- name1+","+pwd1;
- //返回html
- functionajaxHTML(){
- oReq.send("@H_502_68@name=我是html&@H_502_68@pwd=oReq.responseText;//html用文本形式接收
- resObj;
- scriptbodybutton@H_502_68@onclick="ajaxText()">ajax请求文本button"ajaxXML()">ajax请求XML文档"ajaxJSON()">ajax请求json字符串"ajaxHTML()">ajax请求htmldiv@H_502_68@id="myDiv">div>
返回文本的Servlet:
[java]
copy
- packagecom.ajax.test;
- importjava.io.IOException;
- importjavax.servlet.ServletException;
- importjavax.servlet.ServletOutputStream;
- importjavax.servlet.http.HttpServlet;
- importjavax.servlet.http.HttpServletRequest;
- importjavax.servlet.http.HttpServletResponse;
- publicclassTextServletextendsHttpServlet{
- protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
- doPost(request,response);
- voiddoPost(HttpServletRequestrequest,IOException{
- System.out.println("intext");
- request.setCharacterEncoding("utf-8");
- Stringname=request.getParameter("name");
- Stringpwd=request.getParameter("pwd");
- "name:"+name+",pwd:"+pwd);
- //返回文本数据
- response.setContentType("text/plain;charset=utf-8");
- ServletOutputStreamoutputStream=response.getOutputStream();
- outputStream.write(name.getBytes("utf-8"));
- outputStream.write(pwd.getBytes("utf-8"));
- outputStream.flush();
- outputStream.close();
- }