老师给写的ajax类,为什么当ajax接收返回值的时候还要用eval('('+requestInfo+')')??
php端是用json_encode($arr)。
json_encode()处理过数组的本来不就是JSON对象了吗?不可以直接用吗?还必须得用eval()函数处理一下?
php端是用json_encode($arr)。
json_encode()处理过数组的本来不就是JSON对象了吗?不可以直接用吗?还必须得用eval()函数处理一下?
json_encode的结果传递给js会被当做普通的字符串处理的,而不是json数组。
所以不能直接使用。
我现在还是有一个疑问,如果按你们说的JS只能把json_encode($arr)的返回值当成是一个JSON字符串,不能直接处理。但是我试了一下以下代码:
<script>
var test = {"a":1, "b":2};
alert(test); //返回的是Object Object
alert(test.a); //返回1
</script>为什么JS就可以直接使用JSON字符串呢?
eval 变为json对象
就相当于你这里改成
var test = '{"a":1, "b":2}';//字符串,这样你理解了吗?
而不是
var test = {"a":1, "b":2};//这个是javascript对象,不是字符串