【转】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数据 , 首先上网找一些在线的可用来测试的接口. -----------------------------------------------------这里是接口 ...
随机推荐
- How Does Closure Work in Javascript?
Simply, closure is the scope that it can visite and operate the variables outside of the function wh ...
- 行业相关的webgl项目
炼钢厂污水处理http://www.hightopo.com/demo/CirculatingWaterPump/index.html智能idc机房http://www.hightopo.com/de ...
- poj 1026
这题一开始没看清楚 等级差距不超过1 1->2->3 就是错误的,因为3-1==2 ,意思是间接的也不行 其次等级最小是1,最大是n 你要到达1号首领的位置 假设1号等级x,限制m,最大上 ...
- 你不知道的 #include
1.#include 指令 C++的程序中带 “#” 号的语句被称为宏定义或编译指令.#include在代码中是包含和引用的意思,例如:"#include <iostream>& ...
- 9-Unittest+HTMLTestRunner不能生成报告解决方法
1.问题现象 在使用HTMLTestRunner生成测试报告时,出现程序运行不报错,但不能生成报告的情况. 刚开始找了很久没发现问题,后来加上打印信息,发现根本没执行生成报告这部分代码.最后网上找到原 ...
- openGL-计算机图形大作业中出现的几个错误及解决
错误一 错误现象:按动相应按键i和o无法在x轴和y轴移动camera,但按相应按键p可以在z轴移动camera. 错误原因:为了移动camera,设置了三个全局变量x.y.z,用于gluLookAt( ...
- 如果这样来理解HTTPS,一篇就够了!
1.前言 可能有初学者会问,即时通讯应用的通信安全,不就是对Socket长连接进行SSL/TLS加密这些知识吗,干吗要理解HTTPS协议呢. 这其实是个误解:当今主流的移动端IM数据通信,总结下来无外 ...
- centos安装discuz论坛
wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip #下载最新版Discuzunzip Dis......zip ...
- 远程桌面连接:出现身份验证错误,要求的函数不受支持,可能是由于CredSSP加密Oracle修正的解决方法
在做app时需要连接服务器来进行数据交互,但是在阿里云页面里连接服务器太不好用,所以使用windows自带的远程连接来进行. 一.但是连接的过程中出现了以下问题: 二.最初是有点迷茫的,不知道从哪里下 ...
- js代码跑马灯效果-----轮播图字效果!
文字元素: <p id="yc-msg">你有本事来打我呀!</p> js执行代码: function ycMsg() { // 获取 标签 var pOb ...