其原理很简单,结构上基本不变,只是改变处理返回数据的方式.

1.Text/HTML格式 
这种返回类型处理很简单,直接就当作字符串用就行了.为了方便使用,封装成如下函数:

/*** @function 利用ajax动态交换数据(Text/HTML格式)* @param url   要提交请求的页面* @param jsonData  要提交的数据,利用Json传递* @param getMsg 这个函数可以获取到处理后的数据 */ function ajaxText(url,jsonData,getMsg) { //创建Ajax对象,ActiveXObject兼容IE5,6 var oAjax = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"); //打开请求 oAjax.open('POST',url,true);//方法,URL,异步传输 //发送请求 var data = ''; for(var d in jsonData) //拼装数据 data += (d + '=' +jsonData[d]+'&'); oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded"); oAjax.send(data); //接收返回,当服务器有东西返回时触发 oAjax.onreadystatechange = function () { if(oAjax.readyState == 4 && oAjax.status == 200) { if(getMsg) getMsg(oAjax.responseText); } } }

服务器端返回数据格式如下: 
例如:

//返回的是xml格式
//header("Content-Type:text/xml;charset=utf-8");
//返回的是text或Json格式
header("Content-Type:text/html;charset=utf-8");
//禁用缓存,是为了数据一样的前提下还能正常提交,而不是缓存数据 header("Cache-Control:no-cache"); $username = $_POST['username']; //获取用户名 if(empty($username)) echo '请输入用户名'; else if($username == 'acme') echo '用户名已被注册'; else echo '用户名可用';

调用格式如下:

url = 'abc.php';
var jsonData={username:'acme',passw:'acme'};
ajaxText(url,jsonData,getMsg);
function getMsg(msg) { //do something }

2.XML格式 
返回的是一个XML DOM对象,解析其中的数据就类似于HTML DOM 编程. 比如通过name获取标签对象(数组形式),再从该数组中获取需要的标签对象,再从标签对象中获取文本值. 
函数如下:

/*** @function 利用ajax动态交换数据(XML格式)* @param url   要提交请求的页面* @param jsonData  要提交的数据,利用Json传递* @param tagName 要获取值的标签名 * @param getMsg 这个函数可以获取到处理后的数据 */ function ajaxXML(url,jsonData,tagName,getMsg) { //创建Ajax对象,ActiveXObject兼容IE5,6 var oAjax = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"); //打开请求 oAjax.open('POST',url,true);//方法,URL,异步传输 //发送请求 var data = ''; for(var d in jsonData) //拼装数据 data += (d + '=' +jsonData[d] + '&'); oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded"); oAjax.send(data); //接收返回,当服务器有东西返回时触发 oAjax.onreadystatechange = function () { if(oAjax.readyState == 4 && oAjax.status == 200) { var oXml = oAjax.responseXML; //返回的是一个XML DOM对象 var oTag = oXml.getElementsByTagName(tagName); var tagValue = oTag[0].childNodes[0].nodeValue; if(getMsg)getMsg(tagValue); } } }

服务器端返回数据格式如下: 
例如:

//返回的是xml格式
header("Content-Type:text/xml;charset=utf-8");
//返回的是text或Json格式
//header("Content-Type:text/html;charset=utf-8");
//禁用缓存,是为了数据一样的前提下还能正常提交,而不是缓存数据 header("Cache-Control:no-cache"); $username = $_POST['username']; //获取用户名 if(empty($username)) echo '<user><mes>请输入用户名</mes></user>'; //这些标签可以自定义 else if($username == 'acme') echo '<user><mes>用户名已被注册</mes></user>'; else echo '<user><mes>用户名可用</mes></user>';

调用格式如下:

var url = 'abc.php';
var jsonData = {username:'acme'};
ajaxXML(url,jsonData,'mes',getMsg); function getMsg(msg) { //do something }

3.返回json 
函数如下:

/*** @function 利用ajax动态交换数据(Text/HTML格式),但是返回的是Json类型的文本数据* @param url   要提交请求的页面* @param jsonData  要提交的数据,利用Json传递* @param getMsg 这个函数可以获取到处理后的数据 */ function ajaxJson(url,jsonData,getMsg) { //创建Ajax对象,ActiveXObject兼容IE5,6 var oAjax = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"); //打开请求 oAjax.open('POST',url,true);//方法,URL,异步传输 //发送请求 var data = ''; for(var d in jsonData) //拼装数据 data += (d + '=' +jsonData[d] + '&'); oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded"); oAjax.send(data); //接收返回,当服务器有东西返回时触发 oAjax.onreadystatechange = function () { if(oAjax.readyState == 4 && oAjax.status == 200) { var json = eval('('+oAjax.responseText+')');//把传回来的字符串解析成json对象 if(getMsg)getMsg(json); } } }

服务器端返回数据格式如下: 
例如:

//返回的是xml格式
//header("Content-Type:text/xml;charset=utf-8");
//返回的是text或Json格式
header("Content-Type:text/html;charset=utf-8");
//禁用缓存,是为了数据一样的前提下还能正常提交,而不是缓存数据 header("Cache-Control:no-cache"); $username = $_POST['username']; //获取用户名 if(empty($username)) echo '{"mes":"请输入用户名"}'; else if($username == 'acme') echo '{"mes":"用户名已被注册"}'; else echo '{"mes":"用户名可用"}';

调用格式如下:

url = 'abc.php';
var jsonData={username:'acme',passw:'acme'};
ajaxText(url,jsonData,getMsg);
function getMsg(msg) { //do something }

为了方便使用,可以把三个函数合并.合并后的函数如下:

/*** @function 利用ajax动态交换数据* @param url   要提交请求的页面* @param jsonData  要提交的数据,利用Json传递* @param getMsg 这个函数可以获取到处理后的数据 * @param type 接受的数据类型,text/xml/json * @param tagName type = xml 的时候这个参数设置为要获取的文本的标签名 * @return 无 */ function ajax(url,jsonData,getMsg,type,tagName) { //创建Ajax对象,ActiveXObject兼容IE5,6 var oAjax = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"); //打开请求 oAjax.open('POST',url,true);//方法,URL,异步传输 //发送请求 var data = ''; for(var d in jsonData) //拼装数据 data += (d + '=' +jsonData[d]+'&'); oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded"); oAjax.send(data); //接收返回,当服务器有东西返回时触发 oAjax.onreadystatechange = function () { if(oAjax.readyState == 4 && oAjax.status == 200) { if(type == 'text') { if(getMsg) getMsg(oAjax.responseText); } else if(type == 'json') { var json = eval('('+oAjax.responseText+')');//把传回来的字符串解析成json对象 if(getMsg)getMsg(json); } else if(type == 'xml') { var oXml = oAjax.responseXML; //返回的是一个XML DOM对象 var oTag = oXml.getElementsByTagName(tagName); var tagValue = oTag[0].childNodes[0].nodeValue; if(getMsg)getMsg(tagValue); } } } }

转载于:https://www.cnblogs.com/wangking/p/8352155.html

ajax如何处理服务器返回的三种数据类型相关推荐

  1. Ajax响应处理数据的三种格式(主要使用gson包)

    Ajax响应处理数据的三种格式 A.普通文本(重点)后台:sevletresp.getWriter().print("Ajax响应成功");前台:jspvar text= xhr. ...

  2. ajax 服务器怎么响应,Ajax 接收服务器返回的json响应方法

    1.什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript 规范的一个子集,采用完全独立于编程语 ...

  3. iis搭建php出现301,IIS服务器PHP下三种实现301重定向的方法

    IIS服务器PHP下三种实现301重定向的方法 来源:重庆SEO作者:杨南强 2012-05-07 08:47 我来投稿参与评论 301重定向:301代表永久性转移,301重定向是网页更改地址后对搜索 ...

  4. ajax请求返回的数据格式,ajax请求服务器返回json数据格式

    ajax请求服务器返回json数据格式 内容精选 换一换 消息请求返回的状态码如下表所示. 使用API数据源,您可以通过调用一个第三方的REST(Representational State Tran ...

  5. python三种数据类型_Python-更改Pandas中列的数据类型

    小编典典 你可以使用三种主要选项来转换pandas的类型: to_numeric()提供安全地将非数字类型(例如字符串)转换为合适的数字类型的功能.(另请参见to_datetime()和to_time ...

  6. python的三种数据类型列举_3.Python编程之数据类型

    原文文档 类型的概念 Python语言的类型 数字类型,字符串类型,元组类型 列表类型,文件类型,字典类型 3.1 数字和字符串类型 数字类型 程序元素:010/10,存在多种可能 表示十进制数值10 ...

  7. java中使用ajax请求数据格式化,ajax请求服务器返回json数据格式化

    JQuery--实现Ajax应用 实现Ajax应用 1   .load()异步请求数据,通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,调用格式为load(url,[data], ...

  8. python三种数据类型_Python零基础入门学习02:Python基本数据类型:数字类型

    注 :本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. Python学习 Python有三种不同的数字类型:整数(int),浮点数(float)和复数(complex). 值得注意的 ...

  9. iphone文件连接smb服务器,实用!三种iPhone与Windows电脑互传文件操作技巧,建议收藏...

    如果你是苹果全家桶用户,一定会对 「AirDrop(隔空投送)」 功能赞誉有加,使用 AirDrop 可以在 iPhone 与 MacBook.iPad 等设备之间快速传递照片.视频或文件. 遗憾的是 ...

最新文章

  1. NeurIPS 2019揭榜!华人作者贡献42%,谷歌170篇屠榜;国内清华第一,腾讯领衔产业界(附链接)...
  2. 新的一年,开始新的学习旅途
  3. c++ #define
  4. 在Spring Rest模板中跳过SSL证书验证
  5. mysql ip to int_ip网段转换程序(把ip地址转换成相对就的整数)
  6. 12563 - Jin Ge Jin Qu hao
  7. 资料 |《深度学习500问》,川大优秀毕业生的诚意之作
  8. 元胞自动机-附代码注释
  9. “没有存在感”是一种什么感受?
  10. 【Tools】位、字节、机器字、储存单元、主存等概念剖析
  11. 信息安全中常见的网络知识(一)网络基本概念
  12. 关于Ajax跨域的解决方案
  13. 表单工作流审核步骤抄送功能介绍
  14. 如何学习投资 推荐几本教材
  15. Python 爬金十数据
  16. 【20220501】众人眼中的架构师
  17. 欧姆龙模块NC413的使用
  18. 西门子PLC用TIA博途连接搜索后,可以搜到,但只有MAC地址,不显示IP地址,无法转至在线怎么办
  19. Micro-expression recognition: an updated review of current trends,challenges and solutions 论文笔记
  20. docker RabbitMQ:修改Channel limit

热门文章

  1. SlidingMenu的使用,结合Fragment(eclipse环境)
  2. POJ 1091(数论)
  3. node --- [跨域] 预检请求
  4. http --- 共享加密(对称加密)的几个概念
  5. Using KernelShark to analyze the real-time scheduler【转】
  6. flume package遇到的问题
  7. 鼠标提上去弹出提示层(定位)
  8. Storm编程入门API系列之Storm的可靠性的ACK消息确认机制
  9. 【暴力】Codeforces Round #398 (Div. 2) A. Snacktower
  10. 如何为 Horizon View 配置 VMware VSAN?