问题: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