当前位置:网站首页 > 数据科学与大数据 > 正文

Node学习(九)032-管理系统之修改英雄——ajax请求数据之post请求写法-$.ajax() 方法 & 图片预览之URL.createObjectURL(文件对象) & 服务端post接口写法

Node学习(九)032-管理系统之修改英雄——ajax请求数据之post请求写法-$.ajax() 方法 & 图片预览之URL.createObjectURL(文件对象) & 服务端post接口写法

5.3 前端:点击保存,发送ajax请求,实现更新

代码和添加时前端的代码一样。只是修改了保存按钮的类名和接口的名字。

// 当点击“保存”按钮的时候,要阻止默认行为,然后使用FormData收集表单各项数据。 // 然后将数据通过 $.ajax() 方法提交给接口 /updateHero (注:接口我们自定,目前还没有)。 $('.btn-save').click(function (e) { 
    e.preventDefault(); //阻止表单提交 // 收集表单数据 var fd = new FormData($('form')[0]); // 发生ajax请求 $.ajax({ 
    contentType: false, processData: false, type: 'POST', url: '/updateHero', data: fd, dataType: 'json', success: function (res) { 
    // 预期的res ===== {"code": 200, "message": "修改英雄成功"} // 无论成功还是失败,都提示 alert(res.message); if (res.code === 200) { 
    // 修改成功,跳转到index.html location.href = '/index.html'; } } }); }); 

图片预览的代码,和添加时预览的代码相同:只是修改了 #yulan 为 .preview:

 完成图片预览 // 当上传控件(文件域)的内容发生改变的时候,完成预览 $('#heroIcon').change(function () { 
    // 1. 生成一个临时的url // var url = URL.createObjectURL(文件对象); // console.dir(this); var objFile = this.files[0]; var url = URL.createObjectURL(objFile); console.log(url); // 2. 改变“盖伦”那个图片的src为临时的url即可 $('.preview').attr('src', url); }); 

执行 git add .git commit -m '修改英雄的时候,前端完成图片预览和点击保存的时候发送ajax请求'

前面设置表单数据的时候,忘记添加id隐藏域了,现在补充:

在这里插入图片描述

执行 git add .git commit -m '在修改的表单中加入id隐藏域'

5.4 服务端:完成更新的接口

接口和addHero接口差不多。这里修改了SQL语句,另外要判断修改的时候是否要更新头像。

// 4. 完成更新的接口 app.post('/updateHero', upload.single('heroIcon'), (req, res) => { 
    // 使用body-parser是不能接受到form-data类型的数据的。因为提交的数据的编码格式为 multipart/form-data // 需要使用新的模块,叫做 multer // upload.single('heroIcon')。里面的 heroIcon 是表单中文件域的 name值 // console.log(req.file); // 包含图片信息 // console.log(req.body); // 包含文本信息,比如英雄的名字、昵称、技能等 // 后续,写SQL语句,完成添加即可 let sql = 'update heroes set ? where id = ?'; let values = { 
    // 字段: 值 name: req.body.heroName, nickname: req.body.heroNickName, skill: req.body.skillName }; // 针对file要单独判断 // console.log(req.file); // 如果更新的时候,用户没有选择新的头像,则req.file === undefined if (req.file !== undefined) { 
    // 说明更新的时候,选择了头像 values.file = req.file.path; } // return; db(sql, [values, req.body.id], (err, result) => { 
    if (err) { 
    // res.send(可以填js对象); // 在响应数据的时候,send方法会将对象转成json res.send({ 
   code: 201, message: '更新失败'}); } else { 
    res.send({ 
   code: 200, message: '更新成功'}); } }); }); 

执行 git add .git commit -m '完成更新接口'

到此这篇Node学习(九)032-管理系统之修改英雄——ajax请求数据之post请求写法-$.ajax() 方法 & 图片预览之URL.createObjectURL(文件对象) & 服务端post接口写法的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • Node学习(九)04-管理系统之删除英雄——ajax请求数据之get请求写法完成删除、remove()移除DOM元素 & 服务端之完成删除的接口-sql中的delete语句2024-12-01 22:27:09
  • Node学习(九)05-管理系统之英雄列表分页——分页的sql查询语句 & 服务端get接口写法、ajax请求数据之get请求写法 & Math.ceil()函数-返回大于或等于一个给定数字的最小整数2024-12-01 22:27:09
  • Node学习(九)062-管理系统之登录和注册-使用验证码——验证码插件-svg-captcha & 前端生成动态验证码图片 & 服务端验证验证码数据2024-12-01 22:27:09
  • NoSQL数据库(一)——redis的发展和特点 & Redis安装和配置文件redis.conf & redis命令行客户端2024-12-01 22:27:09
  • NoSQL数据库(二)01-Redis数据类型——字符串类型之赋值与取值、递增数字、增加指定浮点数、向尾部追加值、获取字符串长度、设置键值 & 散列类型命令之赋值与取值、获取键值、删除字段、增加数字2024-12-01 22:27:09
  • Node学习(九)031-管理系统之修改英雄——服务端get接口写法之req.query可以获取到url上所有的参数 & ajax请求数据之get请求写法2024-12-01 22:27:09
  • Node学习(九)021-管理系统之添加英雄——完成本地图片预览之生成临时url-URL.createObjectURL(文件对象)& FormData收集表单各项数据之ajax请求写法-post请求2024-12-01 22:27:09
  • Node学习(七)03-mysql基本用法——update修改语句-数据修改需两个占位符& delete删除语句-结果是个对象& multipleStatements为true时可一次性执行多条SQL2024-12-01 22:27:09
  • Node学习(七)02-mysql基本用法——insert添加语句之基本添加、带占位符的形式 & SQL中query方法为问号传递一个对象添加sql数据2024-12-01 22:27:09
  • Node学习(七)01-mysql基本用法——Node中使用MySQL模块的5个步骤 & select查询语句-查询的结果是一个数组,数组中的每个对象就是一行数据 & SQL中有多个占位符2024-12-01 22:27:09
  • 全屏图片