首页 技术 正文
技术 2022年11月18日
0 收藏 872 点赞 3,652 浏览 1527 个字

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 />’);  
                         })  
                   }
               在某个特定的环境下出现了以下的非期望值:【转】AJAX中JSON数据的返回处理问题

空白较多的7行数据为数据库数据,但遍历后的值中却多出了function….这样的多余的值。
    原因:
                 尚不明确。
    解决:
              将forin改为一般的for循环。 【转】AJAX中JSON数据的返回处理问题

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903