详解ajax的data参数错误导致页面崩溃


Posted in Javascript onApril 30, 2018

今天准备把选定表格的其中一行的数据通过ajax传给后端,但是网站确崩溃了。

代码如下:

$('.icon-edit').click(function (event) {  这是一个按钮
    o=$('.icon-edit').index($(this))+1;
    edit.style.display='block';
    //console.log('$(this)',$(this).parent().parent());
    let message=$(this).parent().parent();
    $("#non").val(message.children('td:eq(0)').html());
    $("#name").val(message.children('td:eq(1)').html());
    $("#sex").val(message.children('td:eq(2)').html());
    $("#age").val(message.children('td:eq(3)').html());
    $("#xueyuan").val(message.children('td:eq(4)').html());
    $("#grade").val(message.children('td:eq(5)').html());
    $("#phone").val(message.children('td:eq(6)').html());
    $("#room").val(message.children('td:eq(7)').html());
    l=message.children('td:eq(0)').html();
  });
  $('#ok').click(function () {
    //event.stopImmediatePropagation();
    let text=$('table');
    id=$('#non').val();
    username=$('#name').val();
    sex=$('#sex').val();
    age=$('#age').val();
    institute=$('#xueyuan').val();
    grade=$('#grade').val();
    phone=$('#phone').val();
    hlbhl=$('#room').val()
    text.find("tr:eq("+o+")").children('td:eq(0)').text(id);
    text.find("tr:eq("+o+")").children('td:eq(1)').text(username);
    text.find("tr:eq("+o+")").children('td:eq(2)').text(sex);
    text.find("tr:eq("+o+")").children('td:eq(3)').text(age);
    text.find("tr:eq("+o+")").children('td:eq(4)').text(institute);
    text.find("tr:eq("+o+")").children('td:eq(5)').text(grade);
    text.find("tr:eq("+o+")").children('td:eq(6)').text(phone);
    text.find("tr:eq("+o+")").children('td:eq(7)').text(hlbhl);
    $.ajax({
      type: "POST",
      url: "doAction2.php",//请求的后台地址

      data: {
            non:o,
            id: id,
            username: username,
            sex: sex,
            age: age,
            institute: institute,
            grade: grade,
            phone: phone,
            hlbhl: hlbhl
      },//前台传给后台的参数
      dataType: "json",
      ansync: true,
      ContentType: "application/json; charset=utf-8",
      success: function (msg) {//msg:返回值
        a=2;
        console.log(a);
      }
    });
    edit.style.display='none';
  });

代码的大意是我点击一个按钮($('.icon-edit'))然后弹出一个表单(edit),表单是数据来源于点击,然后修改表格
的内容点击确定按钮($('#ok'))后把表单数据覆盖掉之前点击行的数据,达到修改表格的目的,点击确定时触发ajax,
把修改后的数据发送给后端,拿到数据并更新数据库。

结果页面不报错,而是直接崩溃了,查看了许久,才发现是由于ajax的data参数写错了,之前写成这样:

id=text.find("tr:eq("+o+")").children('td:eq(0)').text(id);
    username=text.find("tr:eq("+o+")").children('td:eq(1)').text(username);
    sex=text.find("tr:eq("+o+")").children('td:eq(2)').text(sex);
    age=text.find("tr:eq("+o+")").children('td:eq(3)').text(age);
    institute=text.find("tr:eq("+o+")").children('td:eq(4)').text(institute);
    grade=text.find("tr:eq("+o+")").children('td:eq(5)').text(grade);
    phone=text.find("tr:eq("+o+")").children('td:eq(6)').text(phone);
    hlbhl=text.find("tr:eq("+o+")").children('td:eq(7)').text(hlbhl);
    $.ajax({
      type: "POST",
      url: "doAction2.php",//请求的后台地址

      data: {
            non:o,
            id: id,
            username: username,
            sex: sex,
            age: age,
            institute: institute,
            grade: grade,
            phone: phone,
            hlbhl: hlbhl
      },//前台传给后台的参数
      dataType: "json",
      ansync: true,
      ContentType: "application/json; charset=utf-8",
      success: function (msg) {//msg:返回值
        a=2;
        console.log(a);
      }
    });
    edit.style.display='none';
  });

从上面可以看出,我传给data的数据并不是字符串之类的,而是一个n.fn.init [td, prevObject: n.fn.init(1), context: document],
由于自己的粗心和对导致ajax出现错误的情况了解比较少,导致看了很久的代码才发现原因,刚开始就以为不会是参数导致,
因为认为参数错误顶多拿到的数据不对,报下错或者结果不一样,果真自己还是太年轻。

Javascript 相关文章推荐
ajax不执行success回调而是执行了error回调
Dec 10 Javascript
JavaScript设计模式之策略模式实例
Oct 10 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
Apr 21 Javascript
jQuery的层级查找方式分析
Jun 16 Javascript
JavaScript判断浏览器及其版本信息
Jan 20 Javascript
详细讲解vue2+vuex+axios
May 27 Javascript
ES6解构赋值的功能与用途实例分析
Oct 31 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
详解如何使用webpack打包JS
Jun 21 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
May 09 Javascript
JS实现电脑虚拟键盘的操作
Jun 24 Javascript
js实现拖拽元素选择和删除
Aug 25 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 #Javascript
JS实现的缓冲运动效果示例
Apr 30 #Javascript
Vue波纹按钮组件制作
Apr 30 #Javascript
学习JS中的DOM节点以及操作
Apr 30 #Javascript
WebSocket的通信过程与实现方法详解
Apr 29 #Javascript
jQuery实现遍历XML节点和属性的方法示例
Apr 29 #jQuery
在vscode里使用.vue代码模板的方法
Apr 28 #Javascript
You might like
php Smarty 字符比较代码
2011/02/27 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
深入PHP curl参数的详解
2013/06/17 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
独特的python循环语句
2016/11/20 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
办公室助理岗位职责
2013/12/25 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
创先争优活动心得体会
2014/09/04 职场文书
个人总结与自我评价
2015/02/14 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
cf战队宣传语
2015/07/13 职场文书
结婚主持人致辞
2015/07/28 职场文书
毕业班工作总结
2015/08/10 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
JavaScript流程控制(分支)
2021/12/06 Javascript
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android