其实就是个post php返回json数组
因为用到的地方比较多,我就写了个函数
比如说:
function a (b,c){
post.send(b,c,'post','json');
……
return eval("("+data+")"); //data是返回的数据
}
var d = a(e.php , actime=f');
结果报错:TypeError: d is null
不管怎样输出都报错,这是个数组 d[0] 也报错
但是直接把函数里的return eval("("+data+")") 改成 return "123" 又是正常的
我也直接试过请求代码,确实能取到数据,
本人小白,求教各位大神,问题出在哪?该怎么解决?
本人小白,有代码才能摸得懂
http://www.jb51.net/article/22211.htm
ajax请求数据,默认是异步的,改成同步的试试
出了错一步一步找,
首先出错是d is null 既然d is null 就不是array或者object 所以你使用d[0]肯定也是错误的
既然d is null 那就看d这个函数
d的返回值就是来之eval(‘(’+data+’)‘) ,所以问题可能是eval(‘(’+data+’)‘) === null
你说的如果是return ‘123’就是正常的 就更加证明了上面说的eval(‘(’+data+’)‘) === null
那么在考虑eval(‘(’+data+’)‘)为什么就是null eval就是一个执行脚本
你可以试着在程序里面打断点调试看看data的值是多少
然后data值可能就是一个null,至于data你怎么做的代码看不见你可以查一下data值的来源 为什么等于null
至于为什么可能的原因就是说到ajax的异步,异步执行的请求,可能还没有返回data值,导致data等于初始的null
问题可能出在异步请求这里
如果是异步问题,修改方式不建议使用同步,尽量使用回调函数
这个原因是ajax是异步的请求,return eval("("+data+")")中的data并不是你ajax返回的data,而是一个未定义的变量
return应该写在ajax的成功回调函数里吧..写在外面会因为异步问题得不到返回值data