zoukankan      html  css  js  c++  java
  • 【转】AJAX中JSON数据的返回处理问题

    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数据的返回处理问题 - demon - 绘世
      
                  空白较多的7行数据为数据库数据,但遍历后的值中却多出了function....这样的多余的值。
        原因:
                      尚不明确。
        解决:
                   将forin改为一般的for循环。
     
    AJAX中JSON数据的返回处理问题 - demon - 绘世
  • 相关阅读:
    安装Sql Server 2008 错误:the folder "c:\temp\sql2008_fullsp3_standard\pcu" you specified is not for pcusource input setting. Specify a valid folder.
    Log4Net error: Inheritance security rules violated while overriding member: 'log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData.....
    Java成长路线
    项目开发之故事经典:教授的裤子分析
    书籍的未来数字化革命的产物:电子书
    如何访问我的博客
    ComboBox应该如何绑定数据
    C#中的常用关键字
    如何编写优秀软件
    为什么现在都用面向对象开发,为什么现在都用分层开发结构?
  • 原文地址:https://www.cnblogs.com/w821759016/p/6210802.html
Copyright © 2011-2022 走看看