【转】AJAX中JSON数据的返回处理问题
AJAX处理复杂数据时,便会使用JSON格式。常用在对数据库的数据查询上。在数据库查询到数据后,便可在处理页面直接将数据转为JSON格式,然后返回。
案例: $.ajax({
type:"post",
url:"check.php",
data:"findtext=yes&name="+$findWhat,
dataType:'json',
success:function(data){
//返回数据处理,以下所有代码运用于此
}
})
NO.1: 
          问题:
                  	lert(data[0]); //---------->输出的是 { 或 [
                   很明显,问题出在dataType上。
         原因:
 	               虽然在处理页面已经对数据进行了处理,但在数据传输流中,JSON是以文本(字符串)方式进行传递,在ajax没有明确指明              数据类型(dataType)为json时,ajax接收到的实际上是一个类似于数组或对象的文本。
         解决:
                  1、在回调函数中进行json对象的转化(此处不讨论)
                  2、最直接的方法是检查是否有dataType:'json',参数。
 	                     没有,加上便OK;
 	                     有,则检查dataType的字母、大小写是否有误。
NO.2:
         (从数据库中查询到的数据,返回到ajax的json实际上是一个数组对象。是对象便可用   .    来获取数据)
           问题:
 	                 for(var k in data){
 	                        alert(data.k);
 	                 }
 	                //数据存在且返回正常,但用 . 来获取数据时,获取不到
           原因:
 	                 数据库查询到的数据具有一个特质:第一个键为数字或数字型的字符串,其他键中则至少有一个是字符串。在转为json                       时,只要有一个键为字符串,数据都会被自动返回json 对象{},非json数组[]。而js也同样是将json视为对象,因此data.k按                   理说没有问题,但是别忘了,第一组键是数字或数字型的字符串,对象的是不能以数字作为属性的,即:data.0 非法。
            解决:
 	                 改为 data[k] 即可。
 	                 再在for in 中加上:
 	                       $.each(data[k],function(index,item){
})
 	                便可比较通用地使用数了。
NO.3:
        (这个问题,主要是针对NO.2的)
         问题:
 	                for(var k in data){
 	                       $.each(data[k],function(index,item){
 	                               $('.findNei').append(item+'<br />');  
 	                        })  
 	                  }
 	              在某个特定的环境下出现了以下的非期望值:

空白较多的7行数据为数据库数据,但遍历后的值中却多出了function....这样的多余的值。
    原因:
 	                尚不明确。
    解决:
 	             将forin改为一般的for循环。

【转】AJAX中JSON数据的返回处理问题的更多相关文章
- ThinkPHP中使用ajax接收json数据的方法
		本文实例讲述了ThinkPHP中使用ajax接收json数据的方法.分享给大家供大家参考.具体分析如下: 这里通过ThinkPHP+jquery实现ajax,扩展了下,写了个查询,前台代码如下: 首先 ... 
- 关于使用Ajax请求json数据,@RequestMapping返回中文乱码的几种解决办法
		一.问题描述: 使用ajax请求json数据的时候,无论如何返回的响应编码都是ISO-8859-1类型,因为统一都是utf-8编码,导致出现返回结果中文乱码情况. $.ajax({ type:&quo ... 
- js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可)
		js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可) 一.总结 ajax读取json和读取普通文本,和获 ... 
- 用ajax获取后台数据,返回json数据,怎么在前台使用?
		用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ... 
- 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回
		作者:ssslinppp 时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ... 
- Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据
		jquery.tmpl.js 是一个模板js ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ... 
- Struts2.5 利用Ajax将json数据传值到JSP
		AJAX +JSON=>JSP AJAX AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着 ... 
- python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)
		昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ... 
- ajax获取json数据及实现跨域请求
		最近想练习一下ajax获取json数据 , 首先上网找一些在线的可用来测试的接口. -----------------------------------------------------这里是接口 ... 
随机推荐
- php倒计时
			<form name="form1"> <div align="center" align="center"> &l ... 
- 网络操作系统 第六章 Window Server 2008 活动目录
			本章小结 在企业网络中,活动目录是必不可少的,它将网络中各种对象组织起来进行管理,方便了网络对象的查找,增强了网络的安全性,为用户的物流管理提供了极大的便利,本章首先介绍了活动目录的基本概念,然后通过 ... 
- MySQL--Skip GTID CAP
			import os script_file = "./skip_file.sql" def write_script(script_content): file_handle = ... 
- 亲子编程玩Micro:bit-动力小车“麦昆”
			少儿编程之风已经吹进各大城市,编程猫.乐博机器人.童程童美等专业培训机构逐渐进入大家的视野,年龄段已经从K12逐渐降低到幼儿园中班.其实,少儿编程的门槛并不高,它不会让孩子一上手就去接触代码,而是会通 ... 
- Spring Boot 2 - 使用CommandLineRunner与ApplicationRunner
			本篇文章我们将探讨CommandLineRunner和ApplicationRunner的使用. 在阅读本篇文章之前,你可以新建一个工程,写一些关于本篇内容代码,这样会加深你对本文内容的理解,关于如何 ... 
- 纯小白创建第一个Node程序失败-容易忽略的一个细节
			一直觉得自己基础还很差,所以自觉不敢去碰node.js,但又对其心怀好奇.恰巧最近有一点空闲时间,忍不住去试了一下水 这不,在创建第一个node程序时就吃了闭门羹,总是提示我没有定义,如下图, 这 ... 
- 移动端调试神器-vConsole
			什么是vConsole? 官方说明是一个web前端开发者面板,可用于展示console日志,方便日常开发,调试. 简单来说相当于移动版的Chrome调试控制台,就是我们在PC端常用的F12 vCo ... 
- Kali学习笔记21:缓冲区溢出实验(漏洞发现)
			上一篇文章,我已经做好了缓冲区溢出实验的准备工作: https://www.cnblogs.com/xuyiqing/p/9835561.html 下面就是Kali虚拟机对缓冲区溢出的测试: 已经知道 ... 
- php中的一些不常见的问题foreach/in_array[开发篇]
			php在开发效率很高,这是无可厚非的,但是却是在牺牲执行效率的.php数组功能非常强大,但是也要多加考虑,多试几种情况情况,以防万一,这里,我就简单的说两个遇到的坑,以后如果有发现更多的,再补上吧! ... 
- Ubuntu 16.04 系统无法挂载u盘的问题
			Ubuntu系统无法挂载U盘设备,提示错误为:mount:未知文件系统类型“exfat”.这是因为Ubuntu默认情况下是不允许挂载U盘的,想在Ubuntu系统下挂载U盘,就要用下面的方法了. sud ... 
