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. HDU 1846 巴什博奕

    点这里去做题 最简单的巴什博奕 ,凑m+1 #include<bits/stdc++.h> int main() { int T,n,r,m; scanf("%d",& ...

  2. 初识Dubbo+Zookeeprt搭建SOA项目

    由于工作中天天和Dubbo打交道,天天写对外服务,所以有必要自己动手搭建一个Dubbo+zookeeper项目来更更深层次的认识Dubbo 首先了解一下SOA: 英文名称(Service Orient ...

  3. Hive(一)

    1. HIVE概念: Hive:由Facebook开源用于解决海量结构化日志的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能. 本 ...

  4. day_9内存管理

    复习 '''文件处理​1.操作文件的三步骤 -- 打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持续 -- 操作文件:读写操作 -- 释放文件:释放操作系统对硬盘空间的持有 2.基础的读写 ...

  5. 背水一战 Windows 10 (116) - 后台任务: 前台程序激活后台任务

    [源码下载] 背水一战 Windows 10 (116) - 后台任务: 前台程序激活后台任务 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 前台程序激活后台任务 示例演示后 ...

  6. 吴恩达机器学习笔记33-评估一个假设输出(Evaluating a Hypothesis Outpute)

    当我们确定学习算法的参数的时候,我们考虑的是选择参量来使训练误差最小化,有人认为得到一个非常小的训练误差一定是一件好事,但我们已经知道,仅仅是因为这个假设具有很小的训练误差,并不能说明它就一定是一个好 ...

  7. HttpServlet的转发和重定向

    HttpServletResponse重定向 1.HTTP协议规定了一种重定向的机制,重定向的运作流程如下 用户在浏览器输入特定的URL,请求访问服务端的某个组件. 服务端的组件返回一个状态码为302 ...

  8. Kali学习笔记20:缓冲区溢出实验环境准备

    在前几篇的博客中:我介绍了OpenVAS和Nessus这两个强大的自动化漏洞扫描器 但是,在计算机领域中有种叫做0day漏洞:没有公开只掌握在某些人手中 那么,这些0day漏洞是如何被发现的呢? 接下 ...

  9. 机器学习入门13 - 正则化:稀疏性 (Regularization for Sparsity)

    原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-sparsity/ 1- L₁正 ...

  10. 利用 Linux tap/tun 虚拟设备写一个 ICMP echo 程序

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面两篇文章已 ...