详解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 相关文章推荐
jQuery实战之仿淘宝商城左侧导航效果
Apr 12 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
Oct 16 Javascript
js控制表单不能输入空格的小例子
Nov 20 Javascript
关于jQuery判断元素是否存在的问题示例探讨
Jul 21 Javascript
jquery通过ajax加载一段文本内容的方法
Jan 15 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
jquery采用oop模式class类的使用示例
Jan 22 Javascript
javascript验证内容为数字以及长度为10的简单实例
Aug 20 Javascript
浅谈angularjs module返回对象的坑(推荐)
Oct 21 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
Apr 10 Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 Javascript
在vue中动态添加class类进行显示隐藏实例
Nov 09 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一维二维数组键排序方法实例总结
2014/11/13 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
Yii实现简单分页的方法
2016/04/29 PHP
php组合排序简单实现方法
2016/10/15 PHP
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
jquery中EasyUI实现异步树
2015/03/01 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
python3简单实现微信爬虫
2015/04/09 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
python tqdm库的使用
2020/11/30 Python
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
软件测试面试题
2015/10/21 面试题
金融专业推荐信
2013/11/14 职场文书
公司市场部岗位职责
2013/12/02 职场文书
音乐器材管理制度
2014/01/31 职场文书
同事吵架检讨书
2014/02/05 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
高一作文之暖冬
2019/11/09 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技