关于ajax返回值读取的问题

来源:互联网 发布:安装linux的步骤 编辑:程序博客网 时间:2024/05/02 01:09

问题:PC端javascript程序 直接在success:function(xhr)中传入xhr ,然后通过xhr直接访问其中属性和值对,但是在mobile页面中怎么调试也不能直接访问返回值得属性值对?

解决步骤:

首先怀疑是我zepto使用ajaxf方法的问题,但是我使用alert和console.log直接打印,发现同样提示 undefined;故排除zepto的问题;

百般调试没有解决后,在网上发想应该是对json数据处理的问题,解决办法如下:

a.  var data =(new Function("","return "+xhr))();

b.var data = eval("(" + xhr + ")"); //加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:

1.一种为使用eval()函数。

2. 使用Function对象来进行返回解析。


至于PC端为啥可以还有待研究!

调试结果发现:在zepto 中 ajax  的dataType必须使用小写“json”指定才有效,而在PC版中jquery 传参数时datatype可以是用“JSON”也可以识别(原来程序就是“JSON”,应该是之前编程者的习惯不好),就是因为两者的差异,导致了问题的产生!    手册上  dataType (default: Intelligent Guess (xml, json, script, or html))



详见地址http://www.cnblogs.com/myjavawork/archive/2011/03/10/1979279.html


0 0