详解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 相关文章推荐
初学JavaScript_03(ExtJs Grid的简单使用)
Oct 02 Javascript
风吟的小型JavaScirpt库 (FY.JS).
Mar 09 Javascript
让浏览器非阻塞加载javascript的几种方法小结
Apr 25 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
Jun 28 Javascript
js调用css属性写法
Sep 21 Javascript
javascript的BOM汇总
Jul 16 Javascript
JavaScript原生节点操作小结
Jan 17 Javascript
vue图片加载与显示默认图片实例代码
Mar 16 Javascript
Javascript 一些需要注意的细节(必看篇)
Jul 08 Javascript
vue.js语法及常用指令
Oct 29 Javascript
使用ajax的post同步执行(实现方法)
Dec 21 Javascript
解决vue-photo-preview 异步图片放大失效的问题
Jul 29 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网站)
2015/10/20 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
javascript完美实现给定日期返回上月日期的方法
2017/06/15 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
用Python制作检测Linux运行信息的工具的教程
2015/04/01 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
对python 调用类属性的方法详解
2019/07/02 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
中科方德软件测试面试题
2016/04/21 面试题
医学护理毕业生自荐信
2013/11/07 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
使用feign服务调用添加Header参数
2021/06/23 Java/Android
python中的getter与setter你了解吗
2022/03/24 Python
索尼ICF-5900W收音机测评
2022/04/24 无线电
python单向链表实例详解
2022/05/25 Python