zoukankan      html  css  js  c++  java
  • 解决遍历json时length找不到对象问题

    <script type="text/javascript">
       //1.首先json 格式一定要这样写,尽管说这只是其中的一种方式
      var json = {"options":"[{\"text\":\"王家湾\",\"value\":\"9\"},{\"text\":\"李家湾\",\"value\":\"10\"},{\"text\":\"邵家湾\",\"value\":\"13\"}]"} 
      json = eval(json.options)// 注意options,如果不写Options ,下面的写法就是json.options.length
      for(var i=0; i<json.length; i++)
      {
         alert(json[i].text+" " + json[i].value)//访问
      }
    </script>

    注意:正常情况下以上方法都可以遍历,但是如果json是作为一个参数传进来的话,如下

    $.ajax({
          type: "POST",
          url: "jsonAjax.htm",
       data: {oname:subA.innerHTML},
          dataType:"text", //ajax返回值设置为text(json格式也可用它返回,可打印出结果,也可设置成json)
          success: function(json){

           alert(json);
          //比如这里输出的是{"options":"[{\"text\":\"王家湾\",\"value\":\"9\"},{\"text\":\"李家湾\",\"value\":\"10\"},{\"text\":\"邵家湾\",\"value\":\"13\"}]"}  ,格式数据完全相当,但是如果不加上红色这句话,就会出现length为空或不是对象,或者 火狐中报出json undefind的错误

           json = JSON.parse(json);//需要加上这一句

           json = eval(json.options); 
           alert(json.length);
        for(var i=0; i<json.length; i++)
        {
            //do something
        }
           
          },
          error: function(json){
           alert("json=" + json);
            return false;
          }
         }); 

    注意:JSON.parse在IE8下面会报错,说JSON未定义,解决方法如下(转自
    孟宪会 的BLOG

    方法1:定义<!DOCTYPE> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>孟宪会:JSON测试</title>
    </head>
    <body>
    <script type="text/javascript">
    alert(typeof JSON);
    </script>
    </body>
    </html>

    方法2:设置X-UA-compatible 标头

    <html>
    <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" >
    <title>孟宪会:JSON测试</title>
    </head>
    <body>
    <script type="text/javascript">
    alert(typeof JSON);
    </script>
    </body>
    </html>
    或者
    <html>
    <head>
    <meta http-equiv="X-UA-Compatible" content="IE=8" >
    <title>孟宪会:JSON测试</title>
    </head>
    <body>
    <script type="text/javascript">
    alert(typeof JSON);
    </script>
    </body>
    </html>

    在实际编程程序的时候,最好的办法是进行判断,如果不支持原生的JSON,那么就是要json2.js提供的对象即可
  • 相关阅读:
    Project Euler 5 Smallest multiple
    Project Euler 4 Largest palindrome product
    CSS3新增的伪类选择器
    CSS选择器
    HTML 5 表单相关元素和属性
    HTML 5中的新特性
    HTML表格相关元素
    列表相关元素及其属性
    HTML行内元素、块状元素和行内块状元素的区分
    对HTML的大致了解
  • 原文地址:https://www.cnblogs.com/hqr9313/p/2727283.html
Copyright © 2011-2022 走看看