ajax提交表单,导致浏览器卡死

一、背景

      这是刚刚遇到的一个问题。说来也奇怪,打开浏览器的调试模式,点击ajax的提交按钮,然后console和network都毫无反应,浏览器也卡死了,网页关不掉。

这里写图片描述

      如图所示,点击按钮之后,整个页面毫无反应,然后此时浏览器已经成功卡死。我听到电脑店额散热扇在疯狂的嚎叫着,电脑使用内存也在稳步增长。

      然后我又试了几次,发现在刚点击按钮的时候,是可以关掉浏览器的。但是随着时间的增加,浏览器会完全卡死,知道你不得不打开任务管理器而关掉它。

二、出错原因

这里写图片描述

      出错原因就在这里,隐原因是因为我在传值的时候,没有定义这个id。相当于这个id是没有经过申明的。

//在ajax上面定义一下id即可
var id = ....;

三、出错原理的猜测

1、奇怪之处

    1)、首先是很奇怪的,我用的是IDE编辑器,如果出现语法错误或者说变量未定义,一般     都会报错的,但是这次没有报错。
2)、在点击按钮之后,console和network都没反应,说明此时并没有走控制器的方法
3)、浏览器会直接卡死。

2、此时我们打印一下这个没有定义的id

 console.log(id);return;

结果:

这里写图片描述

也就是说,在执行ajax的时候,会默认这个id的值为节点。

3、我的猜测

由于id是未定义的,在jquery的闭包中,它可能有个处理机制,例如:

if(id == undefiend){
id = $id;
}

      类似于把变量变成了它的节点信息。然后在进行ajax请求的时候,由于这个是节点信息,所以就会一直进行一些请求,造成网页卡死,内存激增的现象。

PS:以上纯属猜想,本人不负任何责任

四、总结

      在日常的工作学习中,市场会感觉自己是真的菜。需要学习的地方很多,就像这次,虽然一步步的锁定了问题所在。但是对于出现问题的原理,却无从求证。说到底还是自己的JS水平不行。

如果有前端大神知道错误的原理,请告知,谢谢。

end

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值