AJAX处理复杂数据时,便会使用JSON格式。常用在对数据库的数据查询上。在数据库查询到数据后,便可在处理页面直接将数据转为JSON格式,然后返回。

本篇主要讨论:jQuery中,JSON数据在AJAX回调函数中使用,可能出现的3个问题。
案例: $.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数据的返回处理问题的更多相关文章

  1. ThinkPHP中使用ajax接收json数据的方法

    本文实例讲述了ThinkPHP中使用ajax接收json数据的方法.分享给大家供大家参考.具体分析如下: 这里通过ThinkPHP+jquery实现ajax,扩展了下,写了个查询,前台代码如下: 首先 ...

  2. 关于使用Ajax请求json数据,@RequestMapping返回中文乱码的几种解决办法

    一.问题描述: 使用ajax请求json数据的时候,无论如何返回的响应编码都是ISO-8859-1类型,因为统一都是utf-8编码,导致出现返回结果中文乱码情况. $.ajax({ type:&quo ...

  3. js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可)

    js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可) 一.总结 ajax读取json和读取普通文本,和获 ...

  4. 用ajax获取后台数据,返回json数据,怎么在前台使用?

    用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...

  5. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

  6. Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据

    jquery.tmpl.js 是一个模板js  ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...

  7. Struts2.5 利用Ajax将json数据传值到JSP

    AJAX +JSON=>JSP AJAX AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着 ...

  8. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  9. ajax获取json数据及实现跨域请求

    最近想练习一下ajax获取json数据 , 首先上网找一些在线的可用来测试的接口. -----------------------------------------------------这里是接口 ...

随机推荐

  1. 不同后台服务器共用同一session

    建一个类继承SessionStateStoreProviderBase类,override Initialize.SetAndReleaseItemExclusive.ReleaseItemExclu ...

  2. 9-Unittest+HTMLTestRunner不能生成报告解决方法

    1.问题现象 在使用HTMLTestRunner生成测试报告时,出现程序运行不报错,但不能生成报告的情况. 刚开始找了很久没发现问题,后来加上打印信息,发现根本没执行生成报告这部分代码.最后网上找到原 ...

  3. 201671010147 2017年8月27号 初学java的感想

    在IT行业中,java无疑是最热门的,很多企业也青睐java,因为他的扩展性好,可以处理更多客户的数据,正是因为java有前景所以才吸引更多人去学习.在大一我们已经接触vhleC语言,大二开始就解除了 ...

  4. MySQL Schema与数据类型的优化

    选择优化的数据类型: 1. 更小的通常更好: 一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,因为他们占用更少的磁盘,内存和cpu缓存,并且处理时需要的cpu周期也更少 ...

  5. SpringBoot条件注解@Conditional

    最近项目中使用到了关于@Conditional注解的一些特性,故写此文记录一下 @Conditional是啥呀? @Conditional注解是个什么东西呢,它可以根据代码中设置的条件装载不同的bea ...

  6. 生成uuid唯一标识符

    generate_uuid: function(){ var d = new Date().getTime(); if(window.performance && typeof win ...

  7. Java核心技术卷一基础知识-第2章-Java程序设计环境-读书笔记

    第2章 Java程序设计环境 本章内容: 安装Java开发工具箱 使用集成开发环境 选择开发环境 运行图形化应用程序 使用命令行工具 建立并运行applet本章主要介绍如何安装Java开发工具箱(JD ...

  8. Python学习笔记【第四篇】:基本数据类型

    变量:处理数据的状态 变量名 = 状态值 类型 python中有以下基本数据类型: 1:整形 2:字符串类型 3:Bool类型 4:列表 5:元祖(不可变) 6:字典(无序) 7:集合 (无序.不重复 ...

  9. js-完整轮播图

     js-完整轮播图 今天写一个完整的轮播图,首先它需要实现三个功能:1.鼠标放在小圆点上实现轮播.2.点击焦点按钮实现轮播.3.无缝自动轮播. 轮播图的原理: 一系列的大小相等的图片平铺,利用CSS布 ...

  10. Source优化

    优化Source主要包括以下几方面: 1 优化sqlquery 在mapping中,通常会在Source Qualifier组件中使用sqlquery读取数据,则优化通常包括以下几点: 1)  如果在 ...