php页面中 为什么javascript JSON.parse返回的object长度未定义?

php页面中 为什么javascript JSON.parse返回的object长度未定义?,第1张

js中Object 没有提供length属性,只能通过循环对象属性来创建一个新数组

    var temp = JSONparse('{"1":"1","2":"3","3":"3","4":"1","5":"4","6":"3"}');
    var tempArr = [];
    for (var i in temp) {
        tempArr[i] = temp[i]
    }
    alert(tempArrlength)

然后,重点是你PHP的$arra是值对数组吗?如果键名没用的话你直接用array_values就行了

    <php $arra = ["1" => 1, "2" => 3, "3" => 3, "4" => 1, "5" => 4, "6" => 3] >
    var temp = JSONparse('<php echo json_encode(array_values($arra)) >');
    alert(templength)

目前Window7的机器上,使用IE9浏览器的用户很多,但是IE9在兼容性上做了较严格的控制,导致很多程序在chrome,firefox,ie6,ie7,ie8上可以正常运行,在ie9上确出现了各种问题,这里要说的其中一个问题,就是对象为定义,特别是单一个页面上嵌套了多层iframe/frame的时候,往往会出现:
Array对象未定义
$对象未定义
jQuery对象未定义
Json对象未定义
undefined对象未定义
对象未定义
这种情况,我们一开始,
1,首先当然先检查是否JS文件路径引用不对,或者是Html文件的设置编码格式不正确;
2,假如这些基本的都正常没问题,我们再去检查,是否我们编写的js文件放在自己引用的第三方js插件或者框架后面,按照Dom解析方式,我们最好让自己的js文件放在最后解析。
假如上面两步都保证正常,并且在chrome,firefox,ie6,ie7,ie8上可以正常运行,那么就有可能是我们要强调的问题,ie9严格性问题,这里我们可以在页面上处理,添加
<meta
>首先json 对象一定是 大括号{ 开始  ,大括号}结束

int i = jsonStringindexOf("{");   

jsonString = jsonStringsubstring(i);处理前部分

int j = jsonStringlastIndexOf("}");

jsonString = jsonStringsubstring(i-1,j+1);处理前后部分

jsonString = jsonStringreplaceAll("\\\\","");  处理反斜杠

//可以通过解析方法解析json字符串了,不过处理过程每一步最好打印校验下,没问题就解析成JSONObject

这里我用的  cnhutooljsonJSONUtil 来解析的、

看你这写法,应该是jsp跟script文件夹在同一个目录下
可是看你上面应用的css,太容易让人误会了。。
貌似是
jsp跟js文件在同一个目录下,用相对路径的话,直接写dojoxdjs就是啦。
出现上述问题:要么语法结构不是你这么写的。要么就是js文件没有正确引用进来
也有可能是浏览器的兼容问题,也可以换换试试

json字符串应该还没有转换成对象吧
如:var a="{data:[{title:'x',content:'x1'},{title:'x',content:'x2'}]}";
a = eval("("+a+")"); 或者JSONparse(a);后者低级浏览器不支持


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13103593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存