火狐控制台提示 jQuery toJSON 报错
来源:互联网 发布:h3c 端口聚合配置 编辑:程序博客网 时间:2024/05/24 05:10
1 火狐控制台提示报错信息为:TypeError: 'toJSON' called on an object that does not implement interface PerformanceNavigation.
火狐版本为:43.0.3
具体的报错信息如下:
TypeError: 'toJSON' called on an object that does not implement interface PerformanceNavigation.
.param/e()
jquery.min.js:4
ca()
jquery.min.js:2
ca()
jquery.min.js:2
ca()
jquery.min.js:2
.param()
jquery.min.js:4
.ajax()
jquery.min.js:4
f[c]()
jquery.min.js:4
.getJSON()
jquery.min.js:4
e.sendPerformanceTime()
xxxxxxxx.min.js:44
一般这样的情况可以忽略jQuery 本身的报错行,先找其它文件的报错行,最底下的,44行,点进去看看,
$.getJSON("XXXXX?callback=?", data);
进一步跟进后发现,是调用$.getJSON 时报错了,进一步锁定问题出在,data 上,查看data 的值完全发现符合 js 对象,表面上看不出什么来,只能进一步跟进,
由于线上是压缩版jquery 所以先用 fiddler 指向本地未压缩版 (PS:本次用jQuery的版本是1.11.2,),fiddler 操作不再详述,
对 $.getJSON 的跟进问题锁定在 $.param 方法,
对$.param 方法跟进发现问题锁定在,param 方法中的,add 方法上
jQuery 1.11.2 9501 行
value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
可以看到,param 方法对对象方法的处理是这样的,直接执行,这样处理,一般情况下不会出什么问题,一般情况是没事,遇到特殊情况那就报错了,
首先查看本次报错的data 对象,调试发现一个一直忽略的问题,那就是,对象的【继承属性和方法】,由于,object 对象是引用类型,所以 本次,data 对象 中引用了 performance.navigation对象
(截图丢失)自行调试
可以看到,navigation对象拥有 toJSON方法
(截图丢失)自行调试
当调用$.param 时, 对对象属性的遍历处理,
add = function( key, value ) { // If value is a function, invoke it and return its value value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );};
(截图丢失)自行调试
进一步执行
(截图丢失)自行调试
报错了,就是执行,toJSON时报错了,
解决方案,
1 发送数据,过滤掉不必要继承属性,
2 “删掉” 该对象的 toJSON 属性,需要注意的是,此属性是继承属性,直接 delete 该对象属性是不行的, 可以给它赋值为null ,
结语:明明很正常的东西,结果不正常,一定是有忽略的地方,
- 火狐控制台提示 jQuery toJSON 报错
- $.toJSON
- 控制台报错Disconnected
- 火狐Firebug提示:ReferenceError: jQuery is not defined
- 火狐Firebug提示:ReferenceError: jQuery is not defined
- jQuery方法扩展:type, toJSON, evalJSON
- jQuery方法扩展:type, toJSON, evalJSON
- 火狐控制台使用技巧
- 火狐打不开百度 报错sec_error_ocsp_invalid_signing_cert
- bootstrap-datetimepicker 火狐浏览器报错
- angularJs控制台报错之
- Unity 控制台报错问题
- Android 执行 gson.toJson(object) 报java.lang.StackOverflowError异常
- Xcode8报错提示
- django在控制台模板使用报错
- XFire调用CXF服务端,控制台报错
- log.error控制台输出报错
- VS2008控制台程序编译报错
- 详细SQL注入命令使用方法
- Amazon EC2 Permission denied (publickey)
- view的测量
- Sublime 的中文乱码问题
- Bootstrap3 框架下 使用 Bootstrap-table 结合 Bootstrap- file input 上传文件 并显示进度条
- 火狐控制台提示 jQuery toJSON 报错
- linux虚拟文件系统proc
- AngularJS+ASP.NET MVC+SignalR实现消息推送
- Objective-C中的instancetype和id关键字
- (数组)leetcode 228: Summary Ranges
- ubuntu的apt-get install的默认安装路径
- spark graphx从txt文件中读数据构建图
- TLCL学习总结
- 深入理解Xen工具栈(ToolStack)