详解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 相关文章推荐
URL地址中的#符号使用说明
Feb 12 Javascript
javascript中普通函数的使用介绍
Dec 19 Javascript
jQuery统计上传文件大小的方法
Jan 24 Javascript
js动态修改表格行colspan列跨度的方法
Mar 30 Javascript
如何防止JavaScript自动插入分号
Nov 05 Javascript
jQuery利用sort对DOM元素进行排序操作
Nov 07 Javascript
vue-resource拦截器设置头信息的实例
Oct 27 Javascript
react实现点击选中的li高亮的示例代码
May 24 Javascript
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
深入理解Puppeteer的入门教程和实践
Mar 05 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
Apr 07 Javascript
easyUI 实现的后台分页与前台显示功能示例
Jun 01 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+oracle 分页类
2006/10/09 PHP
数字转英文
2006/12/06 PHP
在PHP中操作Excel实例代码
2010/04/29 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
php将html转为图片的实现方法
2017/05/19 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
jquery 防止表单重复提交代码
2010/01/21 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
element中的$confirm的使用
2020/04/26 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
Python文件读取的3种方法及路径转义
2015/06/21 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
python搭建微信公众平台
2016/02/09 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
pandas删除指定行详解
2019/04/04 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
tensorflow的计算图总结
2020/01/12 Python
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
美术师范毕业生自荐信
2013/11/16 职场文书
房屋出租协议书
2014/04/10 职场文书
交心谈心活动总结
2015/05/11 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
python pyhs2 的安装操作
2021/04/07 Python
MSSQL基本语法操作
2022/04/11 SQL Server